使用控制台的Symfony缓存权限

时间:2019-01-16 11:41:42

标签: linux apache symfony permissions

首先,我的.env文件中有APP_ENV=benchmark

通过浏览器访问我的网站后,/var/cache/benchmark/

-rw-rw-rw-   1 dometech dometech     98 janv. 16 12:31 annotations.map
-rw-rw-rw-   1 dometech dometech   6198 janv. 16 12:31 annotations.php
drwxrwxrwx   2 www-data www-data  24576 janv. 16 12:27 Container3xlMUL6
-rw-rw-rw-   1 dometech dometech      0 janv. 16 12:31 Container3xlMUL6.legacy
drwxrwxrwx   2 dometech dometech  24576 janv. 16 12:31 ContainerYBspTLo
drwxrwxrwx   3 dometech dometech   4096 janv. 16 12:31 doctrine
drwxrwxrwx  10 dometech dometech   4096 janv. 16 12:31 pools
drwxrwxrwx   9 www-data www-data   4096 janv. 16 12:31 profiler
drwxrwxrwx   2 www-data www-data   4096 janv. 16 12:31 sessions
-rw-rw-rw-   1 dometech dometech 120497 janv. 16 12:31 srcApp_KernelBenchmarkDebugContainerCompiler.log
-rw-rw-rw-   1 dometech dometech      6 janv. 16 12:31 srcApp_KernelBenchmarkDebugContainerDeprecations.log
-rw-rw-rw-   1 dometech dometech    826 janv. 16 12:31 srcApp_KernelBenchmarkDebugContainer.php
-rw-rw-rw-   1 dometech dometech  36921 janv. 16 12:31 srcApp_KernelBenchmarkDebugContainer.php.meta
-rw-rw-rw-   1 dometech dometech  13649 janv. 16 12:31 srcApp_KernelBenchmarkDebugContainerUrlGenerator.php
-rw-rw-rw-   1 dometech dometech   2493 janv. 16 12:31 srcApp_KernelBenchmarkDebugContainerUrlGenerator.php.meta
-rw-rw-rw-   1 dometech dometech  10857 janv. 16 12:31 srcApp_KernelBenchmarkDebugContainerUrlMatcher.php
-rw-rw-rw-   1 dometech dometech   2493 janv. 16 12:31 srcApp_KernelBenchmarkDebugContainerUrlMatcher.php.meta
-rw-rw-rw-   1 dometech dometech 444567 janv. 16 12:31 srcApp_KernelBenchmarkDebugContainer.xml
-rw-rw-rw-   1 dometech dometech  36025 janv. 16 12:31 srcApp_KernelBenchmarkDebugContainer.xml.meta
drwxrwxrwx   2 www-data www-data   4096 janv. 16 12:31 translations
drwxrwxrwx 140 dometech dometech   4096 janv. 16 12:31 twig
-rw-rw-rw-   1 dometech dometech   6846 janv. 16 12:31 validation.php

好的,没问题。之后:

  • 我运行命令cache:clear
  • 我运行命令APP_ENV=benchmark ./bin/phpunit =用于基准测试的夹具和功能测试(执行时间,nb。查询等)
  • 我再次通过浏览器转到我的网站,我遇到此错误
  

无法创建缓存目录(/ var / www / Bubblemeet / var / cache / benchmark / twig / c5)。

这是我的/var/cache/benchmark/

-rw-rw-rw-  1 dometech dometech     98 janv. 16 12:35 annotations.map
drwxrwxrwx  2 www-data www-data  28672 janv. 16 12:35 Container3xlMUL6
drwxrwxrwx  2 dometech dometech  24576 janv. 16 12:34 ContainerYBspTLo
-rw-rw-rw-  1 www-data www-data      0 janv. 16 12:35 ContainerYBspTLo.legacy
drwxrwxrwx  3 dometech dometech   4096 janv. 16 12:34 doctrine
drwxrwxrwx 10 dometech dometech   4096 janv. 16 12:34 pools
drwxr-xr-x  4 dometech dometech   4096 janv. 16 12:34 profiler
drwxr-xr-x  2 dometech dometech   4096 janv. 16 12:34 sessions
-rw-rw-rw-  1 dometech dometech 120497 janv. 16 12:35 srcApp_KernelBenchmarkDebugContainerCompiler.log
-rw-rw-rw-  1 dometech dometech      6 janv. 16 12:35 srcApp_KernelBenchmarkDebugContainerDeprecations.log
-rw-rw-rw-  1 www-data www-data    826 janv. 16 12:35 srcApp_KernelBenchmarkDebugContainer.php
-rw-rw-rw-  1 www-data www-data  36921 janv. 16 12:35 srcApp_KernelBenchmarkDebugContainer.php.meta
-rw-r--r--  1 dometech dometech  13649 janv. 16 12:34 srcApp_KernelBenchmarkDebugContainerUrlGenerator.php
-rw-r--r--  1 dometech dometech   2493 janv. 16 12:34 srcApp_KernelBenchmarkDebugContainerUrlGenerator.php.meta
-rw-r--r--  1 dometech dometech  10857 janv. 16 12:34 srcApp_KernelBenchmarkDebugContainerUrlMatcher.php
-rw-r--r--  1 dometech dometech   2493 janv. 16 12:34 srcApp_KernelBenchmarkDebugContainerUrlMatcher.php.meta
-rw-rw-rw-  1 www-data www-data 444270 janv. 16 12:35 srcApp_KernelBenchmarkDebugContainer.xml
-rw-rw-rw-  1 www-data www-data  36025 janv. 16 12:35 srcApp_KernelBenchmarkDebugContainer.xml.meta
drwxr-xr-x  2 dometech dometech   4096 janv. 16 12:34 translations
drwxr-xr-x 15 dometech dometech   4096 janv. 16 12:34 twig

我认为我的应用程序在控制台和浏览器之间创建的权限不同,但我不知道为什么。

1 个答案:

答案 0 :(得分:1)

您的网络服务器正在以普通的www-data用户(属于www-data组)运行,而您对PHPUnit的控制台调用使用外壳程序用户的用户和组创建了缓存。这很普遍,应该不足为奇-Shell用户为什么应该能够使用另一个用户写入数据?

最简单的解决方案是使用不同的环境,因为您还可以使用不同的设置来运行测试或访问渲染的网站。

如果您不想使用其他环境,the Symfony documentation为您提供一些建议:

  • 为外壳程序和Web服务器使用同一用户(这意味着www-data应该不再使用)
  • 为您的缓存文件夹使用ACL(这样,www-data用户和您的Shell用户之后便拥有完全权限)