symfony2:写入缓存目录失败
我不得不使用symfony2:写入缓存目录失败,symfony,Symfony,我不得不使用 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、一个devu
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
、一个devu new
、一个devu old
文件夹。这正常吗
通过以下方式生成:
[错误例外]
警告:重命名(/var/www/projet_-etien/app/cache/dev,/var/www/projet_-etienne/app/cache/dev_old):目录在/var/www/projet_etienne/vendo中不为空
r/symfony/symfony/src/symfony/Bundle/FrameworkBundle/Command/CacheClearComm
and.php第77行
请帮忙 如果文件夹已经可写,那么这不是问题所在 您也可以导航到
/www/projet\u etienne/app/cache/
并手动删除其中的文件夹(dev、dev\u new、dev\u old)
如果这不能解决问题,请确保将这些文件夹的副本保存在某个位置以放回原处
我知道这不是应该做的,但它现在对我起了好几次作用。你可能中途放弃了clearcache,现在你已经有了一个app/cache/dev_old 尝试以下方法(在项目的根目录中,假设您在诸如OS X或Linux之类的Unixy环境中):
rm-rf应用程序/cache/dev*
有关良好明确的解决方案,请参阅安装和配置Symfony
部分中的设置权限
部分:
设置权限
安装Symfony时的一个常见问题是应用程序/缓存和
应用程序/日志目录必须可由web服务器和
命令行用户。在UNIX系统上,如果您的web服务器用户
与命令行用户不同,您可以尝试以下方法之一:
以下是解决方案
$ 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
$ 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
$ 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
$ 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选项
umask(0002); // This will let the permissions be 0775
// or
umask(0000); // This will let the permissions be 0777
请注意,当您可以在服务器上访问ACL时,建议使用ACL
因为更改umask不是线程安全的
资料来源:
我将整个目录从我的Windows安装移动到unix生产服务器,并收到了相同的错误。为了解决这个问题,我在unix中运行了这两行代码,一切都开始正常运行
rm -rf app/cache/*
rm -rf app/logs/*
很可能这意味着目录和/或子目录不可写。许多人忘记了子目录 Symfony 2
chmod -R 777 app/cache app/logs
Symfony 3目录结构
chmod -R 777 var/cache var/logs
额外资源
(前面提到)
-另外还包括一个铸网安装
注意:如果您使用的是Symfony 3目录结构,请将
app/cache
和app/logs
替换为var/cache
和var/logs可能您忘记了更改app/cache app/log的权限
我在用Ubuntu,所以
sudo chmod -R 777 app/cache
sudo chmod -R 777 app/logs
sudo setfacl -dR -m u::rwX app/cache 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
它解决了访问错误
切勿使用unsecure 777解决特定的访问问题:
如果symfony版本小于2.8
sudo chmod-R 777 app/cache/*
只需使用此acl cmd,下次创建var中的文件时,它将具有www数据用户的R/w/x权限
cd var
rm -rf *
cd ..
setfacl -d -m u:www-data:rwx var
说明:
setfacl -> Set acl command
-d -> default behavior
-m -> modify
u:www-data: -> for user
rwx -> adding permissions
var -> on the folder
如果您在使用docker(my Symfony 5.1版)启动Symfony项目时遇到此错误。或类似以下的错误:
未捕获异常:读取上游时未能写入文件“/var/www/html/mysite.com.local/var/cache/dev/App_KernelDevDebugContainer.xml”
未捕获警告:文件内容(/var/www/html/mysite.com.local/var/cache/dev/App_kerneldevdebugcontainerdepreactions.log):读取上游时打开流失败:权限被拒绝
下面的修理工帮助了我
在nginx容器的Dockerfile中添加行:
RUN usermod -u 1000 www-data
RUN usermod -u 1000 www-data
在php fpm容器的Dockerfile中添加行:
RUN usermod -u 1000 www-data
RUN usermod -u 1000 www-data
然后删除目录“/var/cache”、“/var/log”中的所有内容,并重建docker的容器。检查缓存文件夹persmisions。它必须是可写的。你可以这样做:chmod 777-R app/cache/tha