Решить 500 ответов Laravel (Uncaught UnexpectedValueException: Laravel.log)

У меня проблема с моим (новым/чистым) приложением Laravel (пробовал v5.2 и v5.5) на Centos 7. Оно показывает ошибку 500, когда я посещаю URL-адрес приложения без ошибок. Я проверил файл журнала apache (/etc/httpd/logs/error-log.log), который содержал две ошибки ниже:

[Пн, 04 декабря, 10:32:34.108956 2017] [: ошибка] [pid 25889] [клиент 192.168.1.240:63437] Неустранимая ошибка PHP: Uncaught UnexpectedValueException: поток или файл "/var/www/public/blog_project/storage/ logs/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->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 в /var/www/ public/blog_project/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php в строке 107

&

[Пн, 04 декабря, 10:32:34.109334 2017] [: ошибка] [pid 25889] [клиент 192.168.1.240:63437] Неустранимая ошибка PHP: Uncaught UnexpectedValueException: поток или файл "/var/www/public/blog_project/storage/ logs/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->error(Object(Symfony\C omponent\Debug\Exception\FatalErrorException), Array)\n#4 /var/www/public/blog_project/vendor/laravel/framework/src/Illuminate/Log/Writer.p в /var/www/public/blog_project/vendor /monolog/monolog/src/Monolog/Handler/StreamHandler.php в строке 107

Чтобы решить эти проблемы, я много гуглил. Решения, которые я нашел там, где все связано с разрешениями, поэтому я попытался установить chmod 777 для всех каталогов и файлов (в целях тестирования, не рекомендуется в реальной среде!) В /var/www/public/blog_project, но это не решило проблему.

Я также обнаружил, что проблема может быть связана с владельцем/группой (маловероятно с chmod 777, но ладно), поэтому я изменил владельца и группу на «apache». К сожалению, это все еще не решило мою проблему.

Я также попробовал «кэш php artisan: очистить» (предложено в какой-то теме, в которой описана та же проблема, что и у меня)


person CodeNinja    schedule 05.12.2017    source источник


Ответы (3)


На момент написания я уже нашел решение (после многих часов гугления) для своей проблемы, но я все еще хочу опубликовать этот вопрос, потому что я не мог найти другой вопрос, который решил мою проблему. Я надеюсь помочь другим людям, у которых такая же проблема, таким образом.

Проблема заключалась в том, что был включен SELinux, который не позволял Apache записывать файлы даже в режиме 777. Кажется, что SELinux активен на Centos 4 или выше по умолчанию. Я также обнаружил, что в Fedora активирован SELinux, что приводит к той же проблеме (нет собственного опыта работы с Fedora).

Я решил проблему, отключив SELinux. Для CentosOS7 id сделал это, отредактировав /etc/sysconfig/selinux и изменив строку SELINUX=enforcing на SELINUX=disabled. После этого я перезагрузил сервер и проблема была решена.

person CodeNinja    schedule 05.12.2017

Я решил проблему, отключив SELinux. Для CentosOS7 id сделал это, отредактировав /etc/sysconfig/selinux и изменив строку SELINUX=enforcing на SELINUX=disabled. После этого я перезагрузил сервер и проблема была решена.

Спасибо :)

person Revandy Satria    schedule 20.03.2019
comment
Пожалуйста! Просто для вашего сведения: вы не должны давать ответ, когда это просто благодарность и не имеете полезной информации в соответствии с исходным вопросом, даже если я ценю это. Вы можете проголосовать за вопрос, если он описывает вашу проблему, и проголосовать за ответ, если он вам помог. См. stackoverflow.com/help/how-to-answer для получения дополнительной информации. - person CodeNinja; 11.04.2019

пожалуйста, не отключайте свой selinux. есть лучший способ сделать это

Смотрите это, я опубликовал лучший способ #59297754">Laravel: file_put_contents() не удалось открыть поток: Отказано в доступе к папке сеанса

person Richie Rizal Amir    schedule 12.12.2019