RuntimeException:CakePHP 3中未正确配置Cake \ Cache \ Engine \ FileEngine

时间:2016-10-22 06:36:36

标签: cakephp caching cakephp-3.2

我在CakePHP 3.2中编写了一个应用程序,最近上传到专用服务器。

但是这会导致RuntimeException错误为

  

缓存引擎Cake \ Cache \ Engine \ FileEngine未正确配置。

Warning: file_put_contents(/var/www/html/logs/error.log) 
[function.file-put-contents]: failed to open stream: Permission denied in
/var/www/html/vendor/cakephp/cakephp/src/Log/Engine/FileLog.php on line 134

我尝试将logstmp目录的权限更改为777(包括子目录),但这并没有解决问题。

ls -la

的输出
drwxr-xr-x. 13 root   root    4096 Oct 22 02:39 .
drwxr-xr-x.  4 root   root      43 Oct 12 20:12 ..
drwxr-xr-x.  2 root   root      63 Oct 21 15:08 bin
-rw----r--.  1 root   root    1499 Oct 21 15:08 composer.json
-rw----r--.  1 root   root   48701 Oct 21 15:08 composer.lock
drwxr-xr-x.  3 root   root    4096 Oct 21 15:08 config
-rw----r--.  1 root   root     329 Oct 21 15:08 .editorconfig
-rw----r--.  1 root   root     772 Oct 21 15:08 .gitattributes
-rw----r--.  1 root   root      41 Oct 21 15:08 .gitignore
-rw----r--.  1 root   root     159 Oct 22 03:02 .htaccess
-rw----r--.  1 root   root     648 Oct 21 15:08 index.php
-rw-r--r--.  1 apache apache    20 Oct 13 00:10 info.php
drwxrwxrwx.  2 root   root      46 Oct 22 02:30 logs
drwxr-xr-x.  2 root   root      10 Oct 21 15:08 mobile_scripts
-rw----r--.  1 root   root    1202 Oct 21 15:08 phpunit.xml.dist
drwxr-xr-x.  3 root   root      37 Oct 21 15:08 plugins
-rw----r--.  1 root   root    1015 Oct 21 15:08 README.md
drwxr-xr-x.  8 root   root    4096 Oct 21 15:13 src
drwxr-xr-x.  4 root   root      71 Oct 21 15:13 tests
drwxrwxrwx.  6 root   root      76 Oct 21 15:13 tmp
-rw----r--.  1 root   root     321 Oct 21 15:08 .travis.yml
drwxr-xr-x. 21 root   root    4096 Oct 21 15:14 vendor
drwxr-xr-x.  5 root   root    4096 Oct 21 15:24 webroot

可能是什么原因以及如何解决?

4 个答案:

答案 0 :(得分:3)

我遇到了同样的问题。 这可能是由于日志和tmp目录的许可。 但有时,如果您的Web服务器用户与命令行用户不同,则可能会出现此权限错误!

您可以在项目目录中运行这个小命令:

HTTPDUSER=`ps aux | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\  -f1`  
setfacl -R -m u:${HTTPDUSER}:rwx tmp    
setfacl -R -d -m u:${HTTPDUSER}:rwx tmp    
setfacl -R -m u:${HTTPDUSER}:rwx logs
setfacl -R -d -m u:${HTTPDUSER}:rwx logs  

它会正确设置权限!! 不要忘记重启apache服务:

service apache2 restart

如果您想查看此内容:https://book.cakephp.org/3.0/en/installation.html

我希望它会有所帮助!! :d

答案 1 :(得分:1)

我得到了它的工作。对于某人如果遇到此错误可以尝试此解决方案。

我正在使用centOS服务器

禁用SELinux为我工作。

答案 2 :(得分:0)

我遇到了同样的问题,看起来它与apache没有对项目文件拥有正确的权限有关。

我设法通过以下方式递归地将整个项目目录的所有者和组设置为Web服务器用户来解决它:

HTTPDUSER=`ps aux | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\  -f1` 
sudo cd "your project directory"
sudo chown $HTTPDUSER:$HTTPDUSER -R .

希望有所帮助!

答案 3 :(得分:-1)

Anuj关于禁用SELinux的答案也适用于我。我很高兴在经过几个小时尝试其他事情后找到了这个。我只想补充一点,我没有禁用它,而是将其从'强制执行'改为'允许'。我在AWS T2实例上运行CentOS 7上的CakePHP 2.4.2。