解决 500 响应 Laravel (Uncaught UnexpectedValueException: Laravel.log)

Solve 500 response Laravel (Uncaught UnexpectedValueException: Laravel.log)

我在 Centos 7 上的 (new/clean) Laravel(尝试过 v5.2 和 v5.5)应用程序有问题。当我访问 URL 的应用程序没有错误。我检查了 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 Fatal error: Uncaught UnexpectedValueException: The stream or file "/var/www/public/blog_project/storage/logs/laravel.log" could not be opened: failed to open stream: Permission denied in /var/www/public/blog_project/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php:107\nStack trace:\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->error(Object(UnexpectedValueException), Array)\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/monolog/src/Monolog/Handler/StreamHandler.php on line 107

&

[Mon Dec 04 10:32:34.109334 2017] [:error] [pid 25889] [client 192.168.1.240:63437] PHP Fatal error: Uncaught UnexpectedValueException: The stream or file "/var/www/public/blog_project/storage/logs/laravel.log" could not be opened: failed to open stream: Permission denied in /var/www/public/blog_project/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php:107\nStack trace:\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->error(Object(Symfony\Component\Debug\Exception\FatalErrorException), Array)\n#4 /var/www/public/blog_project/vendor/laravel/framework/src/Illuminate/Log/Writer.p in /var/www/public/blog_project/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php on line 107

为了解决这些问题,我在谷歌上搜索了很多。我发现所有与权限相关的解决方案因此我尝试将 chmod 777 设置为 /var/www/public/blog_project 中的所有目录和文件(出于测试目的,不推荐在实时环境中使用!)但这并没有解决问题。

我还发现 owner/group 可能是问题所在(chmod 777 不太可能,但没问题)所以我将所有者和组更改为 "apache"。不幸的是,这仍然没有解决我的问题。

我也尝试了 "php artisan cache:clear"(在某些主题中建议与我描述的问题相同)

在撰写本文时,我已经找到了我的问题的解决方案(经过数小时的谷歌搜索),但我仍然想 post 这个问题,因为我找不到另一个问题来解决我的问题。我希望通过这种方式帮助其他遇到同样问题的人。

问题是启用了 SELinux,这会阻止 Apache 即使在 777 模式下也无法写入文件。似乎 Centos 4 或更高版本默认启用了 SELinux。我还发现 Fedora 激活了 SELinux,导致了同样的问题(没有使用 Fedora 的经验)。

我通过禁用 SELinux 解决了这个问题。对于 CentosOS7 id,通过编辑 /etc/sysconfig/selinux 做到了这一点 并将行 SELINUX=enforcing 更改为 SELINUX=disabled。之后我重新启动服务器,问题就解决了。

我通过禁用 SELinux 解决了这个问题。对于 CentosOS7,id 通过编辑 /etc/sysconfig/selinux 并将行 SELINUX=enforcing 更改为 SELINUX=disabled 来完成此操作。之后我重新启动服务器,问题就解决了。

谢谢:)

请不要禁用您的 selinux。有更好的方法

看到这个,我发了一个更好的方法Laravel: file_put_contents() failed to open stream: Permission denied for Session folder