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