PHP不能在Docker容器中写入
我正在尝试在Docker中创build一个工作stream程。 很简单:只需PHP和MySQL即可进行less量testing。
我的docker-compose.yml :
web: build: .docker links: - mysql:mysql ports: - "80:80" - "443:443" volumes: - ./public_html:/var/www/html mysql: image: mysql:5.7 environment: - MYSQL_ROOT_PASSWORD=root volumes: - "./.data/db:/var/lib/mysql" phpmyadmin: image: phpmyadmin/phpmyadmin ports: - "8080:80" links: - mysql:mysql environment: - PMA_HOST=mysql volumes: - /sessions
和我的Dockerfile :
FROM php:5.6-apache RUN docker-php-ext-install mysqli
这一切都OK:我可以起来容器,但PHP本身不能写入目录(如fwrite()
或类似)。
我研究了很多,并尝试了很多教程,但没有…
Apache使用用户www-data
运行PHP,这个用户需要在你的主目录./public_html
上有写权限
要解决这个问题,请转到您的docker-compose目录并执行以下命令来更改您的public_html
目录的所有者以及其中的所有文件。
sudo chown -R www-data:www-data public_html
之后,您需要允许组“www-data”中的用户编辑文件
# To change all the directories to 775 # (write for user & group www-data, read for others): find public_html -type d -exec chmod 775 {} \; # To change all the files to 664 # (write for user & group www-data, read for others): find public_html -type f -exec chmod 664 {} \;
为了让您当前的用户编辑这些文件,您需要将其添加到www-data
组:
sudo usermod -aG www-data $USER