Please provide a valid cache path

前端 未结 20 804
一生所求
一生所求 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条回答
  • 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.

    <?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(...) 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 :)

    0 讨论(0)
  • 2020-12-12 13:07

    /path/to/laravel/storage/framework/

    sessions views cache

    Above is working solution

    0 讨论(0)
提交回复
热议问题