Please provide a valid cache path

前端 未结 20 861
一生所求
一生所求 2020-12-12 12:15

I duplicated a working laravel app and renamed it to use for another app. I deleted the vendor folder and run the following commands again:

composer self-up         


        
20条回答
  •  -上瘾入骨i
    2020-12-12 13:06

    The cause of this error can be traced from 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;
    }
    

    The constructor is invoked by BladeCompiler in 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']);
        });
    }
    

    So, tracing back further, the following code:

    $this->app['config']['view.compiled']
    

    is generally located in your /config/view.php, if you use the standard laravel structure.

     [
            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(...) returns false, if the path does not exist. Thus, invoking

    'Please provide a valid cache path.' error.
    

    Therefore, to get rid of this error, what you can do is to ensure that

    storage_path('framework/views')
    

    or

    /storage/framework/views
    

    exists :)

提交回复
热议问题