我在一个流浪者vm上运行apache的Symfony2应用程序。
Apache以用户www-data
的形式运行,php脚本通常以用户vagrant
运行。
由于同步文件夹中的缓存速度很慢,因此我使用/dev/shm/project/cache
和/dev/shm/project/logs
作为我的日志。
我设置了如下所述的权限:http://symfony.com/doc/current/book/installation.html#book-installation-permissions
sudo setfacl -R -m u:"www-data":rwX -m u:"www-user":rwX -m u:"vagrant":rwX /dev/shm/project/cache /dev/shm/project/logs
sudo setfacl -dR -m u:"www-data":rwX -m u:"www-user":rwX -m u:"vagrant":rwX /dev/shm/project/cache /dev/shm/project/logs
我的问题是,当我phpunit
作为vagrant
运行时,使用以下权限创建缓存文件,这在通过apache访问时是个问题,因为它会导致 RuntimeException “无法写入缓存文件......”。
$ ls -la /dev/shm/project/cache/test
total 2320
drwxrwxr-x+ 7 vagrant vagrant 400 May 19 12:52 ./
drwxrwxr-x+ 3 root root 60 May 19 12:52 ../
drwxrwxr-x+ 2 vagrant vagrant 38700 May 19 12:52 annotations/
-rw-r--r--+ 1 vagrant vagrant 233164 May 19 12:52 appTestDebugProjectContainerCompiler.log
-rw-r--r--+ 1 vagrant vagrant 538934 May 19 12:52 appTestDebugProjectContainer.php
-rw-r--r--+ 1 vagrant vagrant 57446 May 19 12:52 appTestDebugProjectContainer.php.meta
-rw-r--r--+ 1 vagrant vagrant 847598 May 19 12:52 appTestDebugProjectContainer.xml
-rw-r--r--+ 1 vagrant vagrant 174805 May 19 12:52 appTestUrlGenerator.php
-rw-r--r--+ 1 vagrant vagrant 16185 May 19 12:52 appTestUrlGenerator.php.meta
-rw-rw-r--+ 1 vagrant vagrant 5050 May 19 12:52 classes.map
drwxrwxr-x+ 3 vagrant vagrant 60 May 19 12:52 doctrine/
...
每次我必须运行一些脚本时,我都不想切换用户。我希望设置新文件的权限,以便两个用户都可以更改它们。
修改:还有第三位用户:www-user
。该用户是fpm的用户。所以实际上这个用户和流浪者用户必须拥有所有文件的读写权限。我已经更改了acl,但它仍然无效。
答案 0 :(得分:0)
您可以解决此问题,将当前用户(vagrant
?)添加到www-data用户组,该用户组与Apache用户相同。
在类似的环境中,我使用了一个专用用户,这是该组的一部分。
答案 1 :(得分:0)
你可以在每个3个用户的主目录中添加umask(0002)到.profile(这是linux的方式,只是不确定VM)
或
将以下行放在app / console的开头, web / app.php和web / app_dev.php文件:
的umask(0002); //这将允许权限为0775
p.s:所有3个用户必须属于www-data用户组