在Docker环境中运行Symfony时的文件夹权限
我在OSX上运行一个Docker容器。 容器包括:
- Symfony的
- Nginx的
- PHP-FPM
- Redis的
这是运行Symfony应用程序的一个非常常见的设置。
我遇到了一些奇怪的文件夹权限问题,我得到这个错误: 错误截图
我的Symfony可以创build一个文件夹
/var/www/var/chache
但是它不能写入它。 一旦创build了caching文件夹,文件夹权限就设置为:
10344 drwxr-xr-x 1 1000 staff 68 Apr 15 00:33 cache
该文件夹的所有者是我的本地OSX用户,Docker正在运行。 我试图在Docker中更改Symfony CLI中的文件夹权限或所有者,并且没有任何效果。 我试图在我的本地控制台chmod -R 777
,权限被改变,但是然后Symfony创build文件夹里面的caching文件夹,不能再写入它。
我也尝试在app_dev.php中禁用caching:
$kernel = new AppKernel('dev', true); // $kernel->loadClassCache(); $request = Request::createFromGlobals();
在config.yml中:
twig: cache: false
没有任何效果,所以我迷失在这里。
任何想法如何解决一个问题?
你没有向你展示Dockerfile,因为我可以给你一个PHP-FPM容器的例子,这个问题是固定的:
此行正在修复权限错误: usermod -u 1000 www-data
FROM debian:jessie RUN apt-get update RUN apt-get install -y curl \ mcrypt \ && apt-get install -y php5 \ php5-fpm \ php5-cli \ php-pear \ php5-common \ php5-igbinary \ php5-json \ php5-mysql \ php5-mysqlnd \ php5-gd \ php5-curl \ php5-dev \ php5-sqlite \ php5-memcached \ php5-memcache \ && usermod -u 1000 www-data EXPOSE 9000
在这里查看官方文档。
我在Ubuntu上解决权限问题我执行这个命令:
$ sudo setfacl -R -mu:www-data:rwx -mu:`whoami`:rwx app/cache app/logs $ sudo setfacl -dR -mu:www-data:rwx -mu:`whoami`:rwx app/cache app/logs