我在Centos 7上运行了我的(新的/干净的)Laravel(尝试过v5.2和v5.5)应用程序时出现问题。当我访问应用程序的URL时没有错误,显示500错误。我检查了apache的日志文件(/etc/httpd/logs/error-log.log)包含2个错误的内容:
[Mon Dec 04 10:32:34.108956 2017] [:error] [pid 25889] [client 192.168.1.240:63437] PHP致命错误:未捕获UnexpectedValueException:流或文件" / var / www /公共/ blog_project /存储/记录/ laravel.log"无法打开:无法打开流:/var/www/public/blog_project/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php:107 \ n堆栈跟踪权限被拒绝:\ n#0 / var / www / public / blog_project / vendor / monolog / monolog / src / Monolog / Handler / AbstractProcessingHandler.php(37):Monolog \ Handler \ StreamHandler-> write(Array)\ n#1 / var / www / public / blog_project / vendor / monolog / monolog / src / Monolog / Logger.php(337):Monolog \ Handler \ AbstractProcessingHandler-> handle(Array)\ n#2 / var / www / public / blog_project / vendor / monolog / monolog / src / Monolog / Logger.php(616):Monolog \ Logger-> addRecord(400,Object(UnexpectedValueException),Array)\ n#3 / var / www / public / blog_project / vendor / laravel / framework / src / Illuminate / Log /Writer.php(202):Monolog \ Logger->错误(对象(UnexpectedValueException),数组)\ n#4 / var / www / public / blog_project / vendor / laravel / framework / src / Illuminate / Log / Writer。 php(113):Illuminate \ Log \ Writer-> writeLog(' error',Object(U in / var / www / public / blog_project / vendor / monolog / mo)第107行的nolog / src / Monolog / Handler / StreamHandler.php
&安培;
[Mon Dec 04 10:32:34.109334 2017] [:error] [pid 25889] [client 192.168.1.240:63437] PHP致命错误:未捕获UnexpectedValueException:流或文件" / var / www /公共/ blog_project /存储/记录/ laravel.log"无法打开:无法打开流:/var/www/public/blog_project/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php:107 \ n堆栈跟踪权限被拒绝:\ n#0 / var / www / public / blog_project / vendor / monolog / monolog / src / Monolog / Handler / AbstractProcessingHandler.php(37):Monolog \ Handler \ StreamHandler-> write(Array)\ n#1 / var / www / public / blog_project / vendor / monolog / monolog / src / Monolog / Logger.php(337):Monolog \ Handler \ AbstractProcessingHandler-> handle(Array)\ n#2 / var / www / public / blog_project / vendor / monolog / monolog / src / Monolog / Logger.php(616):Monolog \ Logger-> addRecord(400,Object(Symfony \ Component \ Debug \ Exception \ FatalErrorException),Array)\ n#3 / var / www / public / blog_project / vendor / laravel /framework/src/Illuminate/Log/Writer.php(202):Monolog \ Logger->错误(对象(Symfony \ Component \ Debug \ Exception \ FatalErrorException),数组)\ n#4 / var / www / public / / var / www / public / blog_project / vendor / monolog / monolog / src / M中的blog_project / vendor / laravel / framework / src / Illuminate / Log / Writer.p第107行的onolog / Handler / StreamHandler.php
为了解决这些问题,我用Google搜索了很多。解决方案我发现所有与权限相关的所以我试图将chmod 777设置为/ var / www / public / blog_project中的所有目录和文件(用于测试目的,不建议在实时环境中使用!),但这并没有解决问题。
我还发现所有者/组可能是问题(chmod 777不太可能,但确定)所以我将所有者和组更改为" apache"。不幸的是,这仍然没有解决我的问题。
我还尝试了一个" php工匠缓存:清除" (在某些主题中建议描述与我相同的问题)
答案 0 :(得分:1)
在写作的那一刻,我已经找到解决方案(经过数小时的谷歌搜索)我的问题,但我仍然想发布这个问题,因为我找不到另一个问题什么解决了我的问题。我希望以这种方式帮助其他有相同问题的人。
问题在于SELinux已启用,即使使用777模式也会阻止Apache写入文件。似乎SELinux默认情况下由Centos 4或更高版本激活。我还发现Fedora已经激活SELinux会导致同样的问题(没有Fedora的经验)。
我通过禁用SELinux解决了这个问题。对于CentosOS7,ID通过编辑/etc/sysconfig/selinux
来做到这一点
并将行SELINUX=enforcing
更改为SELINUX=disabled
。之后我重启了服务器,问题解决了。
答案 1 :(得分:0)
我通过禁用SELinux解决了该问题。对于CentosOS7 id,通过编辑/ etc / sysconfig / selinux并将SELINUX = enforcing行更改为SELINUX = disabled来实现。之后,我重启了服务器,问题解决了。
谢谢:)
答案 2 :(得分:0)
请不要禁用您的selinux。有一种更好的方法
看到这一点,我发布了一种更好的方法Laravel: file_put_contents() failed to open stream: Permission denied for Session folder