Laravel 5 show ErrorException file_put_contents не удалось открыть поток: нет такого файла или каталога

У меня есть проект на Laravel 5, и я работаю с ним в офисе и дома тоже. Работает нормально, но недавно дома перестал работать. Laravel покажи мне два ErrorException

file_put_contents(G:\project\storage\framework\views/751d8a0fd8a7d4138c09ceb6a34bb377aa2d6265.php):
failed to open stream: No such file or directory

а также

file_put_contents(G:\project\storage\framework/sessions/aIXycR4LIAUBVIqZu0T590paOMIpV8vfZGIroEp0):
failed to open stream: No such file or directory

Я ищу решение проблемы с Google и нахожу информацию о правильных правах. Все советы касаются Linux, но я работаю в Windows в офисе и дома тоже.

Когда я пытаюсь очистить кэш приложения и просмотреть кеш, ремесленник говорит со мной -... очищается. Но данные кеша и представления присутствуют в хранилище.

Как я могу исправить эту проблему?

Заранее спасибо!

Ответы

Ответ 1

После некоторых исследований я понимаю - у меня очень похожие, но разные корневые каталоги проекта и он кешируется в /bootstrap/cache. После очистки кэша начался проект.

Ответ 2

Лучший способ решить эту проблему - перейти в каталог "laravel/bootstrap/cache" и удалить файл config.php. или вы можете переименовать его так же, как config.php.old. И ваша проблема будет исправлена. Счастливое кодирование :-)

Ответ 3

Обычно вы должны запускать команду php artisan config:cache как часть вашей производственной процедуры развертывания. я предлагаю тебе

  1. Удалить файл кэша конфигурации
  2. Очистить кеш приложения
  3. Создать файл кэша для более быстрой загрузки конфигурации

Для этого выполните следующие команды Artisan в командной строке

  1. php artisan config:clear
  2. php artisan cache:clear
  3. php artisan config:cache

Там, где у вас нет доступа к командной строке на вашем сервере, вы можете программно выполнять команды, добавляя к вашим маршрутам следующее:

Route::get('/clear-cache', function() {
    $exitCode = Artisan::call('config:clear');
    $exitCode = Artisan::call('cache:clear');
    $exitCode = Artisan::call('config:cache');
    return 'DONE'; //Return anything
});

А затем вызовите маршрут clear-cache из вашего браузера.

Я надеюсь, что это полезно.

Ответ 4

Этот тип проблемы обычно возникает при переносе одного сервера на другой, из одной папки в другую. Laravel сохраняет кэш и конфигурацию (имя файла), когда папка отличается, тогда возникает эта проблема.

Решение Запустите следующую команду:

php artisan config:cache

https://laravel.com/docs/5.6/configuration#configuration-caching

Ответ 5

На самом деле я столкнулся с этой проблемой, когда я переместил свой проект с сервера на локальный.

в

хранение/рамки

четыре основные папки требуются кеш, сессии, тестирование, просмотры

В моем случае сеансы отсутствовали, возможно, в gitignore.

Поэтому я вручную создал папку сеанса и обновил браузер, и он работал.

Так что любая пропавшая папка, если мы удалим эту проблему, может быть решена.

Ответ 6

В случае общего хостинга, когда у вас нет доступа к командной строке, просто перейдите в папку laravel/bootstrap/cache и удалите (или переименуйте) config.php, и все готово!

Ответ 7

Apache + WSL на windows

Это глупая ошибка, и другой ответ по сравнению с другими, но я добавлю его, потому что это случилось со мной.

Если вы используете WSL (linux bash для windows) для управления вашим приложением laravel, при этом для запуска сервера используется ваш windows apache, то при выполнении любых команд кэширования в wsl будет храниться путь linux, а не путь windows к сеансам и другим папкам.,

Решение

Просто запустите команды очистки кэша в PowerShell, а не в WSL.

$ php artisan optimize

Мне было достаточно.

Ответ 8

Попробуйте с этими командами, которые были полезны с этими ошибками

путь\Проект\хранение\рамки\вид...

php artisan view:clear

путь\Проект\хранение\рамочная/сессия...

php artisan config:cache

Ответ 9

Возможно, есть проблема с вашим файлом-композитором. Вы можете попробовать:

  • установка композитора устанавливает пакеты поставщиков в соответствии с композитом.lock (или создает композитор, если он отсутствует),
  • композитор обновляет всегда регенерирует composer.lock и устанавливает последние версии доступных пакетов на основе composer.json

  • композитор dump-autoload не загрузит вещь. Он просто восстанавливает список всех классов, которые должны быть включены в проект (autoload_classmap.php). Идеально подходит, когда у вас есть новый класс внутри вашего проекта. В идеале вы выполняете компоновку dump-autoload -o для более быстрой загрузки ваших веб-страниц. Единственная причина, по которой он не является дефолтом, заключается в том, что для генерации требуется немного больше времени (но это лишь незначительно заметно)

источник

Ответ 10

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

  • Пытался очистить команды cahe, изменив файл web.php (с помощью ремесленных кодов)
  • Пробовал очистить кеш, подключив SSH (через PUTTY)
  • Пытался принять мой проект в Sub domain в создании нового общедоступного каталога

Поэтому я нашел решение этой проблемы после того, как все вышеперечисленные шаги завершились неудачно, и это сработало для меня отлично. Я удалил файл cache.php в каталоге host_route/bootstrap/cache.

Я думаю, что этот ответ поможет вашей проблеме.

Ответ 11

В моем случае это было не то, что можно исправить с помощью команд php artisan. Проблема заключалась в разрешениях для папки /storage. Ошибка не прояснила это.

Ответ 12

У меня были аналогичные проблемы из-за.gitignore для папки /storage на первой машине, затем клонированный репозиторий на второй машине и laravel был ревизией для записи кэша сессий

Таким образом, создание папки /storage/sessions вручную может быть решением.