我正在OSX上运行Docker容器。集装箱包括:
- Symfony
- Nginx
- php fpm
- Redis
这是运行Symfony应用程序的一种非常常见的设置。
我遇到了一些奇怪的文件夹权限问题,出现了以下错误:错误屏幕截图
我的Symfony可以创建一个文件夹
/var/www/var/chache
但它无法写入其中。创建缓存文件夹后,文件夹权限设置为:
10344 drwxr-xr-x 1 1000 staff 68 Apr 15 00:33 cache
该文件夹的所有者是我的本地OSX用户,Docker在该用户下运行。我曾尝试在Docker中从Symfony的CLI更改文件夹权限或所有者,但没有效果。我尝试在本地控制台下chmod -R 777
,权限被更改,但Symfony在缓存文件夹中创建了文件夹,无法再次写入。
我还尝试禁用app_dev.php:中的缓存
$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 -m u:www-data:rwx -m u:`whoami`:rwx app/cache app/logs
$ sudo setfacl -dR -m u:www-data:rwx -m u:`whoami`:rwx app/cache app/logs