RuntimeException:无法创建缓存目录(/ var / www / sonata / app / cache / dev)

时间:2013-11-21 17:28:42

标签: php symfony logging

我安装了奏鸣曲管理包。 安装后我刷新我的页面有缓存问题然后我使用

rm -rf app/cache app/log

删除缓存。然后我也使用命令

创建控制器
mkdir app/cache app/log

然后我得到了像这样的新问题

Runtime Exception : Unable to create the cache directory (/var/www/sonata/app/cache/dev). Please help .

12 个答案:

答案 0 :(得分:50)

它看起来像文件/目录权限问题。该目录必须可由Web服务器写入。创建目录后,您应该使用

调整权限

$ chown -R www-data:www-data app/cache

$ chown -R www-data:www-data app/log

在命令行上。

这仅适用于Linux系统。用户和组取决于您的分发。在Debian和Ubuntu上,这应该是www-data,在CentOS上它是afaik apache。

另一个解决方案是不删除整个文件夹,而只删除其内容

$ rm -rf app/log/* app/cache/*

但请注意这个命令。

答案 1 :(得分:5)

此解决方案是正确的:https://stackoverflow.com/a/20128013/2400373

但是必须更改Symfony3中的2个命令: 首先,你应该在项目的文件夹中:

$ sudo chown -R www-data:www-data var/cache
$ sudo chown -R www-data:www-data var/logs

删除缓存后:

$ sudo rm -rf var/cache/*
$ sudo rm -rf var/logs/* 

此致

答案 2 :(得分:4)

对于centos:

chown -R apache:apache app/cache

如果您来Symfony帮助,如果删除整个app / logs文件夹,则可能必须执行此操作

chown -R apache:apache app/logs

答案 3 :(得分:3)

我解决了更改文件夹var/cachevar/logs的用户和组的问题,然后我清理了缓存:

sudo chown -R www-data:www-data var/logs
sudo chown -R www-data:www-data var/cache

sudo rm -rf var/logs/* var/cache/*

答案 4 :(得分:2)

更改CHMOD可能会有所帮助,但如果缓存在开发期间让您烦恼,您可以将其停用。 导航到您的应用配置文件(位于根目录的../app/config/config.yml中)。滚动到twig配置设置(在twig :)下并将缓存值(应该指向缓存目录)更改为false,如下所示:

twig:
    cache:  false

如果您没有看到任何缓存配置条目,只需添加上面的行。

答案 5 :(得分:1)

当我使用PHP symfony作为错误图片时,我发现了类似的问题。 我在运行命令后发现了它

php bin/console cache:clear
  

我通过删除文件夹 / app / var / cache

中的所有内容解决了该问题

enter image description here

答案 6 :(得分:0)

可能发生的是您尝试在apache / nginx下创建文件。默认情况下,apache或nginx将umask设置为0022.

  

来自:http://www.cyberciti.biz/tips/understanding-linux-unix-umask-value-usage.html

     

解释八进制umask模式022和002

     

如前所述,如果未更改默认设置,则使用访问模式666和目录777创建文件。在此示例中:

     

普通用户使用的默认umask 002。使用此掩码,默认目录权限为775,默认文件权限为664。   root用户的默认umask为022,默认目录权限为755,默认文件权限为644。   对于目录,基本权限是(rwxrwxrwx)0777,对于文件,它们是0666(rw-rw-rw)。

您需要手动将umask设置为0002,并将其重置回之前的设置,然后才能创建目录。

答案 7 :(得分:0)

mac 计算机上,它将是:

$ sudo chown -R _www:_www var/cache
$ sudo chown -R _www:_www var/logs

如果以上都不适用于您,请在您的php文件中调用“phpinfo()”并找到“User / Group”值。这是授予权限的用户组。

答案 8 :(得分:0)

还要检查路径。就我而言,

return dirname(__DIR__) . '../../../../var/cache/

代替

return dirname(__DIR__) . '/../../../../var/cache/(缺少/

答案 9 :(得分:0)

主要是权限问题。

我已经使用命令$ sudo chmod -R 777 <path/to/cache/directory>

在MAC上解决了该问题

您可以尝试:$ sudo chmod -R 777 /var/www/sonata/app/cache

答案 10 :(得分:0)

概括地说,每个人都可以使用这两个命令可以解决每个人的问题。

sudo chown -R $USER var/cache
sudo chown -R $USER var/logs

其他信息:$USER自动替换您的用户名,以便任何人都可以使用。

答案 11 :(得分:0)

我在使用 phpmyadmin 5.1.0 时遇到了这个问题

解决方案是指定 tmp 目录的完整路径,而不是相对路径。

在配置文件 config.inc.php 上:

$cfg['TempDir'] = 'tmp'

我改成:

$cfg['TempDir'] = '/usr/share/phpmyadmin/tmp'

似乎问题与某些允许的路径“匹配”有关。 也许这个解决方案可以推广到其他使用 twig 的软件。