Разрешения Проблемы с 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 {} \;