Php RuntimeException:无法创建缓存目录(/var/www/sonata/app/cache/dev)
我安装了Sonata管理包。Php RuntimeException:无法创建缓存目录(/var/www/sonata/app/cache/dev),php,symfony,logging,Php,Symfony,Logging,我安装了Sonata管理包。 安装后,我刷新页面时出现缓存问题,然后使用以下命令删除缓存: $ sudo rm -rf var/cache/* $ sudo rm -rf var/logs/* rm-rf应用程序/缓存应用程序/日志 然后我重新创建目录: mkdir应用程序/缓存应用程序/日志 但我得到了以下错误: 运行时异常:无法创建缓存目录(/var/www/sonata/app/cache/dev) 看起来像是文件/目录权限问题。该目录必须可由Web服务器写入。创建目录后,应使用调
安装后,我刷新页面时出现缓存问题,然后使用以下命令删除缓存:
$ sudo rm -rf var/cache/*
$ sudo rm -rf var/logs/*
rm-rf应用程序/缓存应用程序/日志
然后我重新创建目录:
mkdir应用程序/缓存应用程序/日志
但我得到了以下错误:
运行时异常:无法创建缓存目录(/var/www/sonata/app/cache/dev)
看起来像是文件/目录权限问题。该目录必须可由Web服务器写入。创建目录后,应使用调整权限
chown-R www-data:www-data-app/cache
www-R www-data:www-data-app/log
或对于Symfony 4+:
chown-R www-data:www-data-var
这只适用于linux系统。用户和组取决于您的发行版。在Debian和Ubuntu上,这应该是www-data
,在CentOS上,这是afaikapache
另一个解决方案是不删除整个文件夹,而是通过
$rm-rf-app/log/*app/cache/*
但请小心使用此命令。对于centos:
chown -R apache:apache app/cache
如果您是来这里获取Symfony帮助的,那么如果您删除整个app/logs文件夹,您可能也必须这样做
chown -R apache:apache app/logs
更改CHMOD可能会有所帮助,但如果在开发过程中缓存使您烦恼,您可以停用它。 导航到应用程序配置文件(位于根目录的../app/config/config.yml中)。滚动至twig配置设置(twig:)并将缓存值(应指向缓存目录)更改为false,如下所示:
twig:
cache: false
如果没有看到任何缓存配置条目,只需在上面添加一行即可。可能发生的情况是,您正在尝试在apache/nginx下创建文件。默认情况下,apache或nginx将umask设置为0022 发件人: 解释八进制umask模式022和002 如前所述,如果不更改默认设置,则将使用访问模式666创建文件,使用访问模式777创建目录。在本例中: 用于普通用户的默认umask 002。使用此掩码,默认目录权限为775,默认文件权限为664。 根用户的默认umask为022,默认目录权限为755,默认文件权限为644。 对于目录,基本权限为(rwxrwxrwx)0777,对于文件,基本权限为0666(rw)
您需要手动将umask设置为0002,并将其重置回以前的设置,然后才能创建目录。我通过更改用户和文件夹组
var/cache
和var/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/*
此解决方案是正确的: 但是否有必要更改
Symfony3
中的两个命令:
首先,您应该位于project的文件夹中:
$ 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/*
关于在mac计算机上,它将是:
$ sudo chown -R _www:_www var/cache
$ sudo chown -R _www:_www var/logs
如果上面的对您都不起作用,请在php文件上调用“phpinfo()”,并查找“User/Group”值。这是要授予权限的用户组。我在使用PHP symfony作为错误图片时发现了类似的问题。 我在运行命令后找到了它
php bin/console cache:clear
我通过删除文件夹/app/var/cache
还要检查路径。就我而言,我有
返回目录名(uuu DIR_uuu)。'../../..//var/cache/
而不是
返回目录名(uuu DIR_uuu)。'/../../..//var/cache/
(缺少/
)这主要是权限问题
我已经用命令在MAC上解决了这个问题:$sudo chmod-R 777
您可以尝试:
$sudo chmod-R 777/var/www/sonata/app/cache
进行概括,这样每个人都可以使用这两个命令来解决每个人的问题
sudo chown -R $USER var/cache
sudo chown -R $USER var/logs
进一步信息:
$USER
自动替换您的用户名,以便任何人都可以使用。我在phpmyadmin 5.1.0中遇到此问题
解决方案是指定tmp目录的完整路径,而不是相对路径
在配置文件config.inc.php
中,我有:
$cfg['TempDir'] = 'tmp'
我把它改成:
$cfg['TempDir'] = '/usr/share/phpmyadmin/tmp'
问题似乎与“匹配”某些允许的路径有关。
也许这个解决方案可以推广到其他使用twig的软件。当然,一旦应用程序准备好投入生产,你需要重新激活它。我在Ubuntu服务器16.04上遇到了同样的问题,这样做
chown-R www data:www data var/logs var/cache var/sessions
解决了我的问题,别忘了清除缓存..它可以工作Broks:)谢谢,顺便问一下,你能解释一下什么是apache:apache吗?为什么不是当前用户?请小心sudorm-rf/var/logs/*/var/cache/*
您正在删除根缓存!!删除斜杠bevorvar
感谢@Vural Acar的反馈。答案已编辑