Проблема, с которой вы столкнулись при разворачивании PHP сайта на Docker, связана с разрешениями и настройками доступа. Давайте разберемся с каждой из проблем по отдельности:
Ошибка 1: Forbidden - You don't have permission to access this resource
Эта ошибка возникает из-за неправильных разрешений на файлы и директории внутри контейнера. Для исправления этой проблемы вам нужно установить правильные разрешения на каталог /var/www/html/ внутри контейнера. Вы можете сделать это, добавив следующую команду в ваш Dockerfile перед EXPOSE 80: RUN chown -R www-data:www-data /var/www/html/ Ошибка 2: mysqli::real_connect(): (HY000/1045): Access denied for user 'root'@'172.18.0.4' (using password: YES)
Эта ошибка возникает из-за неправильной конфигурации доступа к базе данных MySQL для PhpMyAdmin. Для исправления этой проблемы вам нужно установить правильные параметры доступа в вашем docker-compose.yml для сервиса phpmyadmin. Вот как это можно сделать:
yaml
phpmyadmin: phpmyadmin:
image: phpmyadmin:latest
links:
- mysql
ports:
- "8081:80"
environment:
PMA_HOST: mysql
MYSQL_ROOT_PASSWORD: admin
MYSQL_USER: root
MYSQL_PASSWORD: admin
Решение:
- Убедитесь, что все файлы и каталоги внутри /var/www/html/ имеют правильные разрешения. Обычно достаточно, чтобы файлы были доступны для чтения всем пользователям, и чтобы каталоги были доступны для исполнения.
- Можно добавить команды в ваш Dockerfile для установки правильных разрешений, например: RUN chown -R www-www-data /var/www/html/ && \
chmod -R 755 /var/www/html/
2. Ошибка подключения к MySQL из phpMyAdmin
Решение:
- В вашем docker-compose.yml вы используете переменную MYSQL_ROOT_PASSWORD: admin для сервиса phpmyadmin, но не указываете ее для сервиса mysql. Вам нужно добавить эту же переменную в секцию environment сервиса mysql, чтобы установить пароль для пользователя root: mysql:
image: mysql:latest
environment:
MYSQL_ROOT_PASSWORD: admin
MYSQL_ALLOW_EMPTY_PASSWORD: 'yes' - Убедитесь, что вы используете верный пароль при попытке входа через phpMyAdmin.
- Убедитесь, что в настройках phpMyAdmin указан верный хост (PMA_HOST: mysql). Это должно соответствовать имени сервиса mysql в вашем docker-compose.yml.
Попробуйте внести изменения и перезапустить ваш Docker контейнеры.