#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/