我不得不使用
app/console cache:clear command
Run Code Online (Sandbox Code Playgroud)
在生成实体时解决问题.
我现在无法加载我的主页:
http://localhost/projet_etienne/web/app_dev.php
Run Code Online (Sandbox Code Playgroud)
它说 :
RuntimeException:无法写入缓存文件"/var/www/projet_etienne/app/cache/dev/classes.php".
我对这个缓存业务了解不多!
在我的app/cache文件夹中,我得到了一个dev,一个dev_new,一个dev_old文件夹.这是正常的吗?
该
app/console cache:clear
Run Code Online (Sandbox Code Playgroud)
通过以下方式生成:
[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/Bundle/FrameworkBundle/Command/CacheClearComm
and.php第77行
请帮忙!
ziz*_*jab 96
一个良好的和明确的解决办法看到Setting up Permissions的部分 Installing and Configuring Symfony章节:
设置权限
安装Symfony时的一个常见问题是app/cache和app/logs目录必须可由Web服务器和命令行用户写入.在UNIX系统上,如果Web服务器用户与命令行用户不同,则可以尝试以下解决方案之一.
- 将相同的用户用于CLI和Web服务器
在开发环境中,通常的做法是将相同的UNIX用户用于CLI和Web服务器,因为它在设置新项目时避免了任何这些权限问题.这可以通过编辑Web服务器配置(例如,通常为Apache的httpd.conf或apache2.conf)并将其用户设置为与CLI用户相同(例如,对于Apache,更新用户和组值)来完成.
- 在支持chmod + a的系统上使用ACL
许多系统允许您使用chmod + a命令.首先尝试这个,如果出现错误 - 尝试下一个方法.这使用命令尝试确定您的Web服务器用户并将其设置为HTTPDUSER:
Run Code Online (Sandbox Code Playgroud)$ 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
- 在不支持chmod + a的系统上使用ACL
有些系统不支持chmod + a,但支持另一个名为setfacl的实用程序.您可能需要在分区上启用ACL支持并在使用之前安装setfacl(与Ubuntu一样).这使用命令尝试确定您的Web服务器用户并将其设置为HTTPDUSER:
Run Code Online (Sandbox Code Playgroud)$ 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,它将是:
Run Code Online (Sandbox Code Playgroud)$ 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文件的开头:
Run Code Online (Sandbox Code Playgroud)umask(0002); // This will let the permissions be 0775 // or umask(0000); // This will let the permissions be 0777请注意,当您在服务器上访问ACL时,建议使用ACL,因为更改umask不是线程安全的.
source: 清除缓存时无法写入缓存文件"/var/www/myapp/app/cache/dev/classes.php"
tim*_*com 22
很可能这意味着目录和/或子目录不可写.许多人忘记了子目录.
Symfony 2
chmod -R 777 app/cache app/logs
Run Code Online (Sandbox Code Playgroud)
Symfony 3目录结构
chmod -R 777 var/cache var/logs
Run Code Online (Sandbox Code Playgroud)
Symfony的权限解决方案(前面提到过).
KPN大学的权限解决方案 - 另外还包括安装时的屏幕播放.
注意:如果您使用的是Symfony 3目录结构,请替换app/cache并app/logs使用var/cache和var/logs.
Mat*_*ijk 17
如果文件夹已经可写,那就不是问题了.
您也可以导航到/www/projet_etienne/app/cache/并手动删除其中的文件夹(dev,dev_new,dev_old).
如果这不能解决问题,请务必在某处保存这些文件夹的副本
我知道这不是它应该做的方式,但现在它对我有用了几次.
Boy*_*ema 12
你可能中途中止了一个clearcache,现在你已经有了app/cache/dev_old.
试试这个(在项目的根目录中,假设您使用的是OS X或Linux等Unixy环境):
rm -rf app/cache/dev*
小智 8
也许你忘了更改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
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你..
| 归档时间: |
|
| 查看次数: |
140711 次 |
| 最近记录: |