Ответ 1
после обновления
chmod -R gu+w storage
chmod -R guo+w storage
php artisan cache:clear
Проблема с хранилищем сеансов
Хранилище сеансов, не работающее с моим Laravel 5. Используется в течение месяца без проблем. Но с момента последней загрузки на веб-сервер я получаю следующий ответ на каждой странице.
ErrorException in Filesystem.php line 74:
file_put_contents(): Exclusive locks are not supported for this stream
Многие сообщения в Интернете указывают на удаление ссылки на
$lock on line 74 in Filesystem.php
Похоже на быстрое исправление, которое приведет к другим проблемам в будущем...
Как я могу позаботиться о первопричине?
Рекомендации
https://stackoverflow.com/info/29023948/laravel-5-file-put-contents-exclusive-locks-are-not-supported-for-this-stre https://laracasts.com/discuss/channels/general -discussion/l5-новая установка ошибки
после обновления
chmod -R gu+w storage
chmod -R guo+w storage
php artisan cache:clear
Если вы используете Laravel 5.2.0, вы, вероятно, проигнорировали папку storage
в файле .gitignore
. Дело в том, что когда вы запускаете composer install
на своем сервере, не все файлы из папки хранилища создаются, вы должны их проверить!
В моем случае моя папка хранения содержит только logs
папку без app
и framework
папок. Вам необходимо создать их вручную, чтобы в конце появилась такая структура:
storage
- app
- framework
- cache
- sessions
- views
- logs
Не забудьте сделать папку storage
доступной для записи!
спасибо @peder-wessel. Ваш ответ объясняет причину, но не является постоянным решением и будет работать, пока мы не обновим поставщиков снова, поскольку файл Filesystem.php находится в каталоге поставщика Laravel. Однажды, когда мы composer update
это снова вызовет проблему. :(
Однако мне удалось выяснить, что эта проблема вызвана тем, что сеанс сохраняется в файле. Я изменил это из
'driver' => 'file',
в
'driver' => 'cookie',
в /app/config/session.php
Возможно, создатели laravel также должны добавить это в конфигурацию, поскольку не все (общие) хостинги предоставляют исключительные права блокировки
Это было связано с хостингом. Мой облачный сервис не поддерживал эксклюзивные блокировки. Я обменялся
return file_put_contents($path, $contents, $lock? LOCK_EX: 0);
в
return file_put_contents($path, $contents, $lock? LOCK_SH: 0);
в строке 74 файла Filesystem.php
У меня возникла проблема с публикацией моих активов из моего пакета с этой ошибкой file_put_contents(): Исключительные блокировки не поддерживаются для этого потока
этот пакет помогает NoLock