我在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
我尝试将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
可能是什么原因以及如何解决?
答案 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。