"что 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-данных должны иметь разрешение на запись.


чтобы убедиться, что файлы и папки имеют правильные разрешения:

  1. перейдите в корень вашей установки Laravel (где composer.json и artisan жить.)

  2. изменение владельца пользователя и группы, где yourusername имя пользователя:

    sudo chown -R yourusername:www-data app/storage
    

    это рекурсивно (-R) устанавливает пользователю: владельцы групп в yourusername:www-data во всех файлах и папках из app/storage далее.

  3. добавить разрешение на запись для вас и www-data группа:

    sudo chmod -R ug+w app/storage
    

    это рекурсивно (-R) добавляет (+) записать флаг (w) для пользователя (u) и группы (g), которые владеют файлами и папками из app/storage далее.

  4. кроме того, некоторые предполагают, что вам может потребоваться очистить кэш приложения и восстановить файлы автоматической загрузки Laravel.

    php artisan cache:clear
    php artisan dump-autoload
    
  5. наконец, вы можете захотеть восстановить файлы автозапуска 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

Если все вышеперечисленные предложения не работают, отключите selinux и повторите попытку