Пожалуйста, укажите допустимый путь к кэшу
я продублировал рабочее приложение laravel и переименовал его для использования в другом приложении. Я удалил папку поставщика и снова выполнил следующие команды:
composer self-update
composer-update
npm install
bower install
Я настроил свои маршруты и все правильно, однако теперь, когда я пытаюсь запустить свое приложение в своем браузере, я получаю следующие ошибки:
InvalidArgumentException в компиляторе.php строка 36: пожалуйста, предоставьте
допустимый путь к кэшу.
ErrorException в файловой системе.php строка 111:
file_put_contents(F:wwwexampleappstorageframework/sessions/edf262ee7a2084a923bb967b938f54cb19f6b37d):
не удалось открыть поток: нет такого файла или каталога
У меня никогда не было этой проблемы раньше, я не знаю, что ее вызывает, и я не знаю, как ее исправить, я искал в Интернете решение, но до сих пор не нашел.
5 ответов:
по-видимому, то, что произошло, было, когда я дублировал свой проект, папка framework внутри моей папки хранения не была скопирована в новый каталог, это вызвало мою ошибку.
вы можете редактировать ваш readme.md с инструкциями по установке приложения laravel в другой среде, как это:
## Create folders ``` #!terminal cp .env.example .env && mkdir bootstrap/cache storage storage/framework && cd storage/framework && mkdir sessions views cache ``` ## Folder permissions ``` #!terminal sudo chown :www-data app storage bootstrap -R sudo chmod 775 app storage bootstrap -R ``` ## Install dependencies ``` #!terminal composer install ```
причина этой ошибки может быть прослежена из Illuminate\View\Compilers\Compiler.php
public function __construct(Filesystem $files, $cachePath) { if (! $cachePath) { throw new InvalidArgumentException('Please provide a valid cache path.'); } $this->files = $files; $this->cachePath = $cachePath; }конструктор вызывается BladeCompiler в Illuminate\View\ViewServiceProvider
/** * Register the Blade engine implementation. * * @param \Illuminate\View\Engines\EngineResolver $resolver * @return void */ public function registerBladeEngine($resolver) { // The Compiler engine requires an instance of the CompilerInterface, which in // this case will be the Blade compiler, so we'll first create the compiler // instance to pass into the engine so it can compile the views properly. $this->app->singleton('blade.compiler', function () { return new BladeCompiler( $this->app['files'], $this->app['config']['view.compiled'] ); }); $resolver->register('blade', function () { return new CompilerEngine($this->app['blade.compiler']); }); }Итак, прослеживая дальше, следующий код:
$this->app['config']['view.compiled']обычно находится в вашем /config/view.php, если вы используете стандартную структуру laravel.
<?php return [ /* |-------------------------------------------------------------------------- | View Storage Paths |-------------------------------------------------------------------------- | | Most templating systems load templates from disk. Here you may specify | an array of paths that should be checked for your views. Of course | the usual Laravel view path has already been registered for you. | */ 'paths' => [ resource_path('views'), ], /* |-------------------------------------------------------------------------- | Compiled View Path |-------------------------------------------------------------------------- | | This option determines where all the compiled Blade templates will be | stored for your application. Typically, this is within the storage | directory. However, as usual, you are free to change this value. | */ 'compiled' => realpath(storage_path('framework/views')), ];realpath(...) возвращает false, если путь не существует. Таким образом, вызывая
, чтобы избавиться от этой ошибки, что вы можете сделать, это убедиться, что'Please provide a valid cache path.' error.storage_path('framework/views')или
:)/storage/framework/views
Comments