RuntimeException: 无法创建缓存目录 (/var/www/sonata/app/cache/dev)
Posted
技术标签:
【中文标题】RuntimeException: 无法创建缓存目录 (/var/www/sonata/app/cache/dev)【英文标题】:RuntimeException: Unable to create the cache directory (/var/www/sonata/app/cache/dev) 【发布时间】:2013-12-06 07:56:56 【问题描述】:我安装了 Sonata 管理包。 安装后我刷新我的页面有缓存问题然后我使用以下命令删除缓存:
rm -rf app/cache app/log
然后我重新创建目录:
mkdir app/cache app/log
但我收到以下错误:
运行时异常:无法创建缓存目录 (/var/www/sonata/app/cache/dev)。
【问题讨论】:
【参考方案1】:看起来像是文件/目录权限问题。该目录必须可由网络服务器写入。创建目录后,您应该使用
调整权限chown -R www-data:www-data app/cache
chown -R www-data:www-data app/log
或者对于 Symfony 4+:
chown -R www-data:www-data var
这仅适用于 linux 系统。用户和组取决于您的分配。在 Debian 和 Ubuntu 上应该是 www-data
,在 CentOS 上是 afaik apache
。
另一种解决方案是不删除整个文件夹,而只删除它们的内容
$ rm -rf app/log/* app/cache/*
但请小心使用此命令。
【讨论】:
我在 Ubuntu Server 16.04 上遇到了同样的问题,这样做chown -R www-data:www-data var/logs var/cache var/sessions
解决了我的问题,不要忘记清除缓存..【参考方案2】:
对于 centos:
chown -R apache:apache app/cache
如果你是来这里寻求 Symfony 帮助的,如果你删除了整个 app/logs 文件夹,你可能也必须这样做
chown -R apache:apache app/logs
【讨论】:
它有效 Broks :) 谢谢,顺便问一下,你能解释一下什么是 apache:apache 吗?为什么不是当前用户?【参考方案3】:更改 CHMOD 可能会有所帮助,但如果缓存在开发过程中让您烦恼,您可以将其停用。 导航到您的应用配置文件(位于根目录的 ../app/config/config.yml 中)。滚动到 twig 配置设置(在 twig 下:)并将缓存值(应该指向缓存目录)更改为 false,如下所示:
twig:
cache: false
如果您没有看到任何缓存配置条目,只需添加上面的行。
【讨论】:
当然,一旦应用准备好投入生产,您就需要重新激活它【参考方案4】:可能发生的情况是您正在尝试在 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,并将其重置为之前的设置,然后才能创建目录。
【讨论】:
【参考方案5】:我解决了更改用户和文件夹组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/*
【讨论】:
小心sudo rm -rf /var/logs/* /var/cache/*
你正在删除根缓存!!删除var
之前的斜线
感谢@Vural Acar 的反馈,答案已编辑【参考方案6】:
这个解决方案是正确的:https://***.com/a/20128013/2400373
但有必要更改Symfony3
中的两个命令:
首先你应该在项目的文件夹中:
$ 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/*
问候
【讨论】:
【参考方案7】:在 mac 计算机上是:
$ sudo chown -R _www:_www var/cache
$ sudo chown -R _www:_www var/logs
如果以上都对您不起作用,请在您的 php 文件中调用“phpinfo()”并查找“用户/组”值。这是要授予权限的用户组。
【讨论】:
【参考方案8】:我在使用 PHP symfony 作为错误图片时发现了类似的问题。 运行命令后找到了
php bin/console cache:clear
我通过删除文件夹 /app/var/cache
中的所有内容解决了这个问题
【讨论】:
【参考方案9】:还要检查路径。就我而言,我有
return dirname(__DIR__) . '../../../../var/cache/
而不是
return dirname(__DIR__) . '/../../../../var/cache/
(缺少/
)
【讨论】:
【参考方案10】:主要是权限问题。
我已经在 MAC 上使用命令解决了它:$ sudo chmod -R 777 <path/to/cache/directory>
你可以试试:$ sudo chmod -R 777 /var/www/sonata/app/cache
【讨论】:
【参考方案11】:概括一下,让每个人都可以使用这两个命令可以解决每个人的问题。
sudo chown -R $USER var/cache
sudo chown -R $USER var/logs
更多信息:$USER
会自动替换您的用户名,以便任何人都可以使用。
【讨论】:
【参考方案12】:我在使用 phpmyadmin 5.1.0 时遇到了这个问题
解决办法是指定tmp目录的完整路径,而不是相对路径。
在配置文件config.inc.php
我有:
$cfg['TempDir'] = 'tmp'
我改成:
$cfg['TempDir'] = '/usr/share/phpmyadmin/tmp'
似乎问题与某些允许路径的“匹配”有关。 也许这个解决方案可以外推到使用 twig 的其他软件。
【讨论】:
以上是关于RuntimeException: 无法创建缓存目录 (/var/www/sonata/app/cache/dev)的主要内容,如果未能解决你的问题,请参考以下文章
RuntimeException: 无法创建缓存目录 (/var/www/sonata/app/cache/dev)
UnityPlayerActivity:java.lang.RuntimeException:无法在未调用 Looper.prepare() 的线程内创建处理程序
java.lang.RuntimeException:无法在未调用Looper.prepare()的线程内创建处理程序错误
java.lang.RuntimeException:无法在未调用 Looper.prepare() 的线程内创建处理程序,在 android 中出现运行时错误
Android RuntimeException:无法实例化服务
未捕获的异常'RuntimeException',消息'无法创建目录public / assets // node_modules / font-awesome / fonts