PHP无法在Docker容器中编写
问题描述:
我正在尝试在Docker中创建工作流程。 很简单:只需PHP和MySQL即可进行小测试。PHP无法在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运行PHP与用户www-data
,该用户需要有对你的主机目录的写入权限./public_html
要解决那么,转到您的docker-compose目录并执行以下命令来更改您的public_html
目录的所有者以及其中的所有文件。
sudo chown -R www-data:www-data public_html
之后,你需要允许组“WWW的数据”,在用户编辑文件
# 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
你能告诉我你的php Dockerfile吗?我认为它是由许可问题引起的。 – Gabbax0r
我想你是写@ Gabbax0r,但我是新的Linux ... 我的Dockerfile已经有问题,并指向[php5.6-apache](https://github.com/docker-library/php/ blob/1c56325a69718a3e3cf76179e75d070b7e23da62/5.6/Dockerfile)。 –