symfony2:未能写入caching目录

我不得不使用

app/console cache:clear command 

在生成实体时解决问题。

我现在无法加载我的主页:

  http://localhost/projet_etienne/web/app_dev.php 

它说 :

RuntimeException:无法写入caching文件“/var/www/projet_etienne/app/cache/dev/classes.php”。

我不太了解这个caching业务!

在我的app/cache文件夹中,我得到了一个dev ,一个dev_new ,一个dev_old文件夹。 这是正常的吗?

 app/console cache:clear 

通过这样的方式产生一个:

[ErrorException]警告:重命名(/ var / www / projet_etienne / app / cache / dev,/ var / www / projet_etien
ne / app / cache / dev_old):目录在/ var / www / projet_etienne / vendo中不为空
R / symfony中/ symfony中/ src目录/ Symfony的/包/ FrameworkBundle /命令/ CacheClearComm
和.php第77行

请帮忙!

对于一个好的和明确的解决scheme,请参阅Installing and Configuring Symfony部分中的Setting up Permissions部分:

设置权限

安装Symfony时的一个常见问题是app / cache和app / logs目录必须由Web服务器和命令行用户写入。 在UNIX系统上,如果您的Web服务器用户与命令行用户不同,则可以尝试以下解决scheme之一。

  1. CLI和Web服务器使用相同的用户

在开发环境中,为CLI和Web服务器使用相同的UNIX用户是一种常见的做法,因为它在设置新项目时避免了任何这些权限问题。 这可以通过编辑您的Web服务器configuration来完成(例如,通常为Apache的httpd.conf或apache2.conf)并将其用户设置为与CLI用户相同(例如,对于Apache,更新用户和组值)。

  1. 在支持chmod + a的系统上使用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 
  1. 在不支持chmod + a的系统上使用ACL

有些系统不支持chmod + a,但支持另一个名为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 -mu:"$HTTPDUSER":rwX -mu:`whoami`:rwX app/cache app/logs $ sudo setfacl -dR -mu:"$HTTPDUSER":rwX -mu:`whoami`:rwX app/cache app/logs 

如果这不起作用,请尝试添加-n选项。

  1. 不使用ACL

如果前面的方法都不适用,请更改umask,以使caching和日志目录可以分组写入或全局可写(取决于Web服务器用户和命令行用户是否在同一组中)。 为了达到这个目的,把下面一行放在app / console,web / app.php和web / app_dev.php文件的开头:

 umask(0002); // This will let the permissions be 0775 // or umask(0000); // This will let the permissions be 0777 

请注意,如果您在服务器上访问ACL,build议使用ACL,因为更改umask不是线程安全的。

http://symfony.com/doc/current/book/installation.html#checking-symfony-application-configuration-and-setup

源: 清除caching时写入caching文件“/var/www/myapp/app/cache/dev/classes.php”失败

这很可能意味着目录和/或子目录不可写入。 许多人忘记了子目录。

Symfony 2

 chmod -R 777 app/cache app/logs 

Symfony 3目录结构

 chmod -R 777 var/cache var/logs 

其他资源

Symfony的权限解决scheme (前面提到过)。

KPN大学的权限解决scheme – 另外还包括安装屏幕。

注意:如果您使用的是Symfony 3目录结构,请使用var/cachevar/logsreplaceapp/cacheapp/logs var/logs

如果该文件夹已经可写,那不是问题。

您也可以导航到/www/projet_etienne/app/cache//www/projet_etienne/app/cache/删除那里的文件夹(dev,dev_new,dev_old)。

如果这不能解决问题,请确保将这些文件夹的副本保存在某处

我知道这不是它应该做的方式,但它现在对我来说已经好几次了。

你可能中止了一个clearcache,现在你已经有了一个app / cache / dev_old。

试试这个(在你的项目的根目录下,假设你在Unixy环境如OS X或Linux):

rm -rf app/cache/dev*

也许你忘了更改应用程序/caching应用程序/日志的权限

我正在使用Ubuntu

 sudo chmod -R 777 app/cache sudo chmod -R 777 app/logs sudo setfacl -dR -mu::rwX app/cache app/logs 

希望能帮助到你..

我将整个目录从Windows安装移动到unix生产服务器,我得到了同样的错误。 为了解决这个问题,我只是在unix中运行这两行,一切都开始正常运行

rm -rf app / cache / * rm -rf app / logs / *

我执行了:

 ps aux | grep apache 

有这样的事情:

 root 28147 0.0 5.4 326336 27024 ? Ss 20:06 0:00 /usr/sbin/apache2 -k start www-data 28150 0.0 1.3 326368 6852 ? S 20:06 0:00 /usr/sbin/apache2 -k start www-data 28151 0.0 4.4 329016 22124 ? S 20:06 0:00 /usr/sbin/apache2 -k start www-data 28152 0.1 6.0 331252 30092 ? S 20:06 0:00 /usr/sbin/apache2 -k start www-data 28153 0.0 1.3 326368 6852 ? S 20:06 0:00 /usr/sbin/apache2 -k start www-data 28154 0.0 1.3 326368 6852 ? S 20:06 0:00 /usr/sbin/apache2 -k start www-data 28157 0.0 1.3 326368 6852 ? S 20:06 0:00 /usr/sbin/apache2 -k start user 28297 0.0 0.1 15736 924 pts/4 S+ 20:12 0:00 grep --color=auto apache 

所以我没有访问的用户竟然是www-data因此我执行命令:

 sudo chown -R www-data app/cache sudo chown -R www-data app/logs 

并解决了访问错误。

永远不要使用不安全的777来解决特定的访问问题:

 sudo chmod -R 777 app/cache sudo chmod -R 777 app/logs