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

RuntimeException : Cake\Cache\Engine\FileEngine is not properly configured in CakePHP 3

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

但这会给出 RuntimeException 错误,因为

Cache engine Cake\Cache\Engine\FileEngine is not properly configured.

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

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

我成功了。对于遇到此错误的人,可以尝试此解决方案。

我正在使用 centOS 服务器

禁用 SELinux 对我有用。

Anuj 关于禁用 SELinux 的回答对我也有用。经过数小时的尝试,我很高兴发现了这一点。我只是想补充一点,我没有禁用它,而是将它从 'enforcing.' 更改为 'permissive' 我是 AWS T2 实例上 CentOS 7 上的 运行 CakePHP 2.4.2。

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

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

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

我有同样的问题,看起来它与 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 .

希望对您有所帮助!