我不得不使用
app/console cache:clear command
解决生成实体时的问题。
我现在无法在以下位置加载我的主页:
http://localhost/projet_etienne/web/app_dev.php
上面写着:
RuntimeException:写入缓存文件"/var/www/projet_etienne/app/cache/dev/classes.php".失败
我对这个缓存业务不太了解!
在我的app/cache
文件夹中,我得到了一个dev
,一个dev_new
,一个dev_old
文件夹。这正常吗?
这个
app/console cache:clear
通过以下方式生成:
缓存警告:重命名(/var/www/projet_etienne/
/ ErrorException /dev,/var/www/projet_etien
ne/app/cache/dev_old):/var/www/projet_etienne/vendo中的目录不为空
r/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Command/CacheClearComm
and.php第77行
请帮帮我!
发布于 2013-02-25 23:17:37
要获得一个好的、明确的解决方案,请参阅Installing and Configuring Symfony
部分中的Setting up Permissions
部分:
设置权限
安装Symfony时的一个常见问题是,app/cache和app/logs目录必须对web服务器和命令行用户都是可写的。在UNIX系统上,如果您的web服务器用户与命令行用户不同,您可以尝试以下解决方案之一。
使用同一用户
在开发环境中,CLI和web服务器使用相同的UNIX用户是一种常见的做法,因为这样可以避免在设置新项目时出现这些权限问题。这可以通过编辑您的web服务器配置(例如,对于Apache通常为httpd.conf或apache2.conf )并将其用户设置为与您的CLI用户相同(例如,对于Apache,更新用户和组值)来完成。
的系统上使用ACL
许多系统允许您使用chmod +a命令。首先尝试此方法,如果出现错误,请尝试下一种方法。这将使用命令尝试确定您的web服务器用户,并将其设置为HTTPDUSER:
$ rm -rf app/cache/* $ rm -rf app/logs/* $ HTTPDUSER=ps aux | grep -E '[a]pache|[h]ttpd|[\_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\ -f1
$ sudo chmod +a "$HTTPDUSER allow delete,write,append,file_inherit,directory_inherit“app/cache app/logs $ sudo chmod +a "whoami
allow delete,write,append,file_inherit,directory_inherit”app/cache app/logs
的系统上使用ACL
有些系统不支持chmod +a,但支持另一个名为setfacl的实用程序。在使用setfacl之前,您可能需要在分区上启用ACL支持并安装setfacl(与Ubuntu一样)。这将使用命令尝试确定您的web服务器用户,并将其设置为HTTPDUSER:
$ HTTPDUSER=ps aux | grep -E '[a]pache|[h]ttpd|[\_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\ -f1
$ sudo setfacl -R -m u:"$HTTPDUSER":rwX -m u:whoami
:rwX app/cache app/logs $ sudo setfacl -dR -m u:"$HTTPDUSER":rwX -m u:whoami
:rwX app/cache app/logs
对于Symfony 3,它将是:
$ HTTPDUSER=ps aux | grep -E '[a]pache|[h]ttpd|[\_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\ -f1
$ sudo setfacl -R -m u:"$HTTPDUSER":rwX -m u:whoami
:rwX var/cache var/logs $ sudo setfacl -dR -m u:"$HTTPDUSER":rwX -m u:whoami
:rwX var/cache var/logs
如果这不起作用,请尝试添加-n选项。
不使用ACL的
如果之前的方法都不适用于您,请更改umask,使缓存和日志目录成为组可写目录或全局可写目录(取决于web服务器用户和命令行用户是否在同一组中)。为此,请在app/console、web/app.php和web/app_dev.php文件的开头放置以下行:
umask(0002);//权限为0775 //或umask(0000);//权限为0777
请注意,当您有权在服务器上访问它们时,建议使用ACL,因为更改umask不是线程安全的。
来源:Failed to write cache file "/var/www/myapp/app/cache/dev/classes.php" when clearing the cache
发布于 2014-06-18 03:20:34
这很可能意味着目录和/或sub-directories不可写。许多人忘记了子目录。
Symfony 2
chmod -R 777 app/cache app/logs
Symfony 3目录结构
chmod -R 777 var/cache var/logs
其他资源
Permissions solution by Symfony (前面提到过)。
Permissions solution by KPN University -另外还包括安装时的屏幕显示。
注意:如果你使用Symfony 3目录结构,用var/cache
和var/logs
替换app/cache
和app/logs
。
发布于 2012-11-04 04:59:43
如果文件夹已经是可写的,那么这不是问题。
你也可以导航到/www/projet_etienne/app/cache/
,然后手动删除其中的文件夹(dev,dev_new,dev_old)。
如果这不能解决问题,请确保将这些文件夹的副本保存到某个位置。
我知道这不应该是这样做的,但现在它在我身上起了几次作用。
https://stackoverflow.com/questions/13211829
复制相似问题