Из Laravel мне не удалось открыть поток: отказано в разрешении

#php #laravel

#php #laravel

Вопрос:

Я использую Laravel 5.4 и получил ошибку на веб-сервере, как показано ниже

Фатальная ошибка PHP: неперехваченное исключение ErrorException: file_put_contents(/github/myweb/monitor/storage/framework/views/b38c71581503e85762ce2fe49a8bis726b1164d9.php) : не удалось открыть поток: отказано в разрешении n / github / myweb / monitor / vendor / laravel / framework / src / Illuminate/ Filesystem/ Файловая система.php:122 Трассировка стека: n # 0 [внутренняя функция]:

Когда я тестировал на локальном, все было в порядке, но после отправки кода на сервер я получаю сообщение об ошибке для пути '/github/myweb/' , откуда он взят. Мне нужен такой путь

/var/www/master/monitor

Как удалить префикс '/github/myweb/' из path, я не знаю, откуда он

Что не так?

Комментарии:

1. это означает, что вам нужно разрешение 755 на strorage directory (рекурсивно)

Ответ №1:

Сначала очистите свой кэш,

 php artisan config:clear
php artisan config:cache
  

И затем запустите sudo chmod -R 755 storage/

В качестве альтернативы вы можете удалить свой bootstrap/cache/config.php

Комментарии:

1. Нет, не предоставляйте 777 разрешений ни для одной папки

2. У меня это сработало в среде разработки, так что. Dazzle, Как решить эту проблему, не предоставляя разрешений 777?

3. вы также должны предоставить разрешение на производство

4. Вы можете добавить 755 в хранилище в рабочей среде.

5. Чего бы вы ни надеялись достичь, это chmod 777 неправильно и опасно. Вы абсолютно не хотите предоставлять доступ на запись к исполняемым или системным файлам всем пользователям ни при каких обстоятельствах. Вы захотите вернуться к нормальным разрешениям как можно скорее (вероятно, для вашего варианта использования chmod 755 ) и узнать о модели разрешений Unix, прежде чем пытаться использовать ее снова. Если это произошло в системе с доступом в Интернет, проверьте, мог ли злоумышленник воспользоваться этим для повышения своих привилегий. В сценариях, где 755 не работает, поймите, что означают цифры, а затем извлеките это оттуда.

Ответ №2:

Если вы зайдете на компакт-диск в свое приложение, вы, вероятно, увидите, что в некоторых папках есть пользователь или группа «www-data».

Если вы используете Laravel Forge, чтобы исправить это, вы хотите изменить пользователя и группу на «forge».

Вместо того, чтобы вводить cd в каждый каталог и запускать это для каждого файла и папки, вы можете сделать это рекурсивно с флагом -R.

 sudo chown -R forge:forge storage
  

Теперь вы можете вернуться к выполнению прогресса!

Ответ №3:

Попробуйте: php artisan просмотр: очистить

Ответ №4:

Я не уверен, что то, что я сделал, правильно, но я изменил владельца и группу папки кэша, чтобы соответствовать остальной части приложения

 # cd /var/www/html/snipeit/storage/framework
# chown -R snipeitapp:www-data cache/