"что Laravel.log " не удалось открыть: не удалось открыть поток
у меня есть настройка Laravel homestead на локальной машине OSX, все, казалось, шло гладко, пока я не попытался открыть пример.app: 8000 и получил эту ошибку:
Error in exception handler: The stream or file "/home/vagrant/Code/example/app/storage/logs/laravel.log" could not be opened: failed to open stream: Protocol error in /home/vagrant/Code/example/bootstrap/compiled.php:8671
Я следил за документами Laravel, а также за Laracast о создании усадьбы, поэтому я не уверен, что будет причиной этого. Я вижу это /home/vagrant/Code/example/app/storage/logs/laravel.log
не существует, но я предполагаю, что это то, что должно быть создано автоматически?
6 ответов
необходимо выполнить одно из следующих действий:
sudo chmod -R 644 app/storage
sudo chmod -R 755 app/storage
все файлы и папки под app/storage
должно быть записи и группа www-data (сервер).
ошибка в обработчике исключений: поток или файл "laravel / app/storage/logs / laravel.журнал " не удалось открыть: не удалось открыть поток: отказано в разрешении в laravel / vendor/monolog/monolog/src/Monolog/Handler / StreamHandler.на PHP:77
если вы получите эту ошибку (или аналогичную ошибку) в браузере, когда доступ к вашему сайту, то группа www-data
не могу написать app/storage
. Если вы получите эту ошибку при выполнении определенного php artisan
команды, то вы (пользователь) не могу написать app/storage
. Поэтому и вы, и группа www-данных должны иметь разрешение на запись.
чтобы убедиться, что файлы и папки имеют правильные разрешения:
перейдите в корень вашей установки Laravel (где
composer.json
иartisan
жить.)-
изменение владельца пользователя и группы, где
yourusername
имя пользователя:sudo chown -R yourusername:www-data app/storage
это рекурсивно (
-R
) устанавливает пользователю: владельцы групп вyourusername:www-data
во всех файлах и папках изapp/storage
далее. -
добавить разрешение на запись для вас и
www-data
группа:sudo chmod -R ug+w app/storage
это рекурсивно (
-R
) добавляет (+
) записать флаг (w
) для пользователя (u
) и группы (g
), которые владеют файлами и папками изapp/storage
далее. -
кроме того, некоторые предполагают, что вам может потребоваться очистить кэш приложения и восстановить файлы автоматической загрузки Laravel.
php artisan cache:clear php artisan dump-autoload
-
наконец, вы можете захотеть восстановить файлы автозапуска Composer.
composer dump-autoload
Что касается меня, я изменил свое разрешение на хранение с chmod -R 777 storage
и это работает хорошо.
Я проверил эту конфигурацию в здесь.
Если изменение разрешений файла, как описано в других ответах, не сработало, и вы используете CentOS 7 или RHEL, тогда проблема может быть программой безопасности selinux. Я боролся со всеми видами разрешений и групп, прежде чем заметить ответ user3670777 на фреймворк Laravel 4: не удалось открыть поток: разрешение отказано
надеюсь, это поможет другим.
вы можете сделать это следующим образом
chmod -R 775 storage
что означает
7 - Owner can write
7 - Group can write
5 - Others cannot write!
если ваш веб-сервер не работает как бродяга, он не сможет писать на него, поэтому у вас есть 2 варианта:
chmod -R 777 storage
или измените группу на пользователя веб-сервера, предположив, что это www-data:
chown -R vagrant:www-data storage