从头开始阻止您,没有权限问题。 / storage递归chmodded 777
,整个项目文件夹都被apache阻塞:apache
我什至将日志文件重命名为...-旧文件,并且apache创建了一个新文件...如果它没有实际的写许可权,则不允许创建它。
在CentOS版本6.6(最终版)下运行
从git部署了这个项目,这个宅基地为我的同事工作。
完整错误:
[2015年5月18日星期一10:17:58] [错误] [客户端86.124.208.14] PHP致命
错误:未捕获的异常“ UnexpectedValueException”,带有消息
'流或文件
“ /var/www/vhosts/mapper.pavementlayers.com/storage/logs/laravel-2015-05-18.log”
无法打开:无法打开流:“权限被拒绝”
/var/www/vhosts/mapper.pavementlayers.com/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php:84\nStack
跟踪:\ n#0
/var/www/vhosts/mapper.pavementlayers.com/vendor/monolog/monolog/src/Monolog/Handler/RotatingFileHandler.php(88):
Monolog \ Handler \ StreamHandler-> write(Array)\ n#1
/var/www/vhosts/mapper.pavementlayers.com/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php(37):
Monolog \ Handler \ RotatingFileHandler-> write(Array)\ n#2
/var/www/vhosts/mapper.pavementlayers.com/vendor/monolog/monolog/src/Monolog/Logger.php(265):
Monolog \ Handler \ AbstractProcessingHandler-> handle(Array)\ n#3
/var/www/vhosts/mapper.pavementlayers.com/vendor/monolog/monolog/src/Monolog/Logger.php(543):
Monolog \ Logger-> addRecord(400,'exception'Symf ...',Array)\ n#4
/var/www/vhosts/mapper.pavementl in
/var/www/vhosts/mapper.pavementlayers.com/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php
在第84行
最佳答案
SElinux可能阻止Apache创建此文件。
要对此进行测试,您可以使用以下命令暂时禁用SElinux:
setenforce 0
这会将SElinux置于宽松模式。这意味着您仍然在SElinux日志文件中收到错误消息,但是SElinux不会阻止该命令。
要再次激活SElinux,您可以输入:
setenforce 1
或重启您的CentOS服务器。
不幸的是,我在CentOS上使用Laravel 5也遇到了问题,原因是SElinux。
我最后禁用SElinux。我知道这不是正确的做法,但是我还没有时间让两者一起工作!
更新资料
因此,我终于有时间进一步调查此问题,并让SELinux与Laravel 5一起工作。我刚刚为可能遇到此问题的人更新了这篇文章。如上所述,禁用SELinux并不是最佳策略。
需要完成三件事:
文件夹Storage和Bootstrap / Cache必须具有正确的SELinux上下文。这可以通过以下命令来实现:
semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/<Laravel Site>/storage(/.*)?"
semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/<Laravel Site>/bootstrap/cache(/.*)?"
SELinux上下文需要应用于以下目录:
restorecon -Rv "/var/www/<Laravel Site>/storage"
restorecon -Rv "/var/www/<Laravel Site>/bootstrap/cache"
Apache用户需要具有在两个目录中创建文件的权限。这可以通过CentOS 7中的ACL实现:
setfacl -R -m u:apache:rwX storage/
setfacl -R -m u:apache:rwX bootstrap/cache/
您需要做的最后一件事是再次启用SELinux。
关于laravel - Laravel 5:laravel.log无法打开:权限被拒绝,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30306315/