Разрешения Проблемы с Laravel на CentOS
Я клонировал репозиторий Laravel в свою коробку CentOS 7. Когда я пытаюсь запустить его, я получаю ошибку 500, но ничего не отображается.
Поэтому я проверяю /var/log/httpd/error_log
и вижу, что у меня есть некоторые ошибки разрешений:
[Mon May 16 11:39:32.996441 2016] [:error] [pid 2434] [client 104.156.67.195:39136] PHP Fatal error: Uncaught UnexpectedValueException: The stream or file "/var/www/html/MYSITE/storage/logs/laravel.log" could not be opened: failed to open stream: Permission denied in /var/www/html/MYSITE/bootstrap/cache/compiled.php:13701
Stack trace:
#0 /var/www/html/MYSITE/bootstrap/cache/compiled.php(13635): Monolog\\Handler\\StreamHandler->write(Array)
#1 /var/www/html/MYSITE/bootstrap/cache/compiled.php(13396): Monolog\\Handler\\AbstractProcessingHandler->handle(Array)
#2 /var/www/html/MYSITE/bootstrap/cache/compiled.php(13494): Monolog\\Logger->addRecord(400, Object(Symfony\\Component\\Debug\\Exception\\FatalErrorException), Array)
#3 /var/www/html/MYSITE/bootstrap/cache/compiled.php(13189): Monolog\\Logger->error(Object(Symfony\\Component\\Debug\\Exception\\FatalErrorException), Array)
#4 /var/www/html/MYSITE/bootstrap/cache/compiled.php(13160): Illuminate\\Log\\Writer->writeLog('error', Object(Symfony\\Component\\Debug\\Exception\\FatalErrorException), Array)
# in /var/www/html/MYSITE/bootstrap/cache/compiled.php on line 13701
Я сделал следующее, чтобы попытаться преодолеть проблемы:
chmod -R 775 storage
chmod -R 775 vendor
chown -R apache:apache storage
Итак, теперь это выглядит так:
-rwxrwxr-x. 1 apache apache 2156 May 16 11:41 storage/logs/laravel.log
Но это не сработало.
Интересно, что я неправильно набрал некоторые команды artisan
ранее, и они, казалось, добавляли журналы в файл журнала...
Я уже прочитал/попробовал:
Ответы
Ответ 1
Оказывается, проблема связана с selinux
Я нашел этот ответ, который решил мою проблему.
Докажите, что это проблема, отключив selinux
командой
setenforce 0
Это должно позволить писать, но вы отключили дополнительную безопасность весь сервер. Это плохо. Поверните SELinux назад
setenforce 1
Затем, наконец, используйте SELinux, чтобы разрешить запись файла с помощью этого Команда
chcon -R -t httpd_sys_rw_content_t storage
И ты ушел!
Ответ 2
Мне нужно сделать больше настроек для SELinux, чем просто для storage
. Особенно config
dir может решить эту проблему при загрузке Laravel.
Если вы sudo setenforce permissive
работаете, верните его обратно sudo setenforce enforcing
и следуйте ниже.
Настройка SELinux laravel:
sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/site/laravel/storage(/.*)?"
sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/site/laravel/bootstrap/cache(/.*)?"
Возможно, вам не понадобится следующий для config
, но я сделал это. Может быть безопаснее не запускать этот, если вам не нужно:
sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/site/laravel/config(/.*)?"
Затем сбросьте настройки после внесения изменений в каталог:
restorecon -Rv /var/www/site/
Ответ 3
В моем случае это был другой пользователь Unix, так что этот работал:
chown -R php-fpm:php-fpm storage
Ответ 4
Еще одно решение, которое работает для меня
Перейти в каталог html:
cd /var/www/html
Если ваш веб-сервис apache:
chown -R apache:apache laravel_Folder/
Если ваша веб-служба nginx:
chown -R nginx:nginx laravel_Folder/
Затем измените режим папки Storge:
chmod -R 775 laravel_Folder/storage/
Ответ 5
Примените это для всего проекта.
chcon -R -t httpd_sys_rw_content_t project_folder
Ответ 6
попробуйте это сработало для меня...
sudo find ./storage -type f -exec chmod 666 {} \;
sudo find ./storage -type d -exec chmod 777 {} \;