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
我尝试将 logs
和 tmp
目录的权限更改为 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 .
希望对您有所帮助!
我用 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
我尝试将 logs
和 tmp
目录的权限更改为 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 .
希望对您有所帮助!