我正在尝试在docker中创建工作流程。 这很简单:只需要PHP和MySQL进行小测试。
我的 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
一切都好:我可以装容,但PHP本身不能写入目录(如fwrite()
或类似的东西)。
我研究了很多,并尝试了很多教程,但没有...
答案 0 :(得分:4)
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