【问题标题】:"Please provide a valid cache path" error in laravellaravel中的“请提供有效的缓存路径”错误
【发布时间】:2016-11-23 20:12:57
【问题描述】:

我复制了一个正常工作的 laravel 应用程序并将其重命名为用于另一个应用程序。我删除了 vendor 文件夹并再次运行以下命令:

composer self-update

composer-update

npm install

bower install

我正确配置了我的路线和一切,但是现在当我尝试在浏览器中运行我的应用程序时,我收到以下错误:

Compiler.php 第 36 行中的 InvalidArgumentException:请提供 有效的缓存路径。

Filesystem.php 第 111 行中的错误异常: file_put_contents(F:\www\example\app\storage\framework/sessions/edf262ee7a2084a923bb967b938f54cb19f6b37d): 无法打开流:没有这样的文件或目录

我以前从来没有遇到过这个问题,我不知道是什么原因造成的,我也不知道如何解决它,我在网上搜索了一个解决方案,但到目前为止还没有找到。

【问题讨论】:

  • 您需要重建存储文件夹,它们在您的 .gitignore 文件中,因此在您克隆项目时不会被复制(因为它们永远不会被推送到 repo)

标签: laravel laravel-5


【解决方案1】:

尝试以下方法:

storage/framework 下创建这些文件夹:

  • sessions
  • views
  • cache

现在应该可以了

【讨论】:

  • 我将它与 php artisan cache:clear 和 php artisan config:clear 和 php artisan view:clear 从下面的答案结合起来,然后它就起作用了
  • 您可以手动删除 storage 文件夹并通过 cmd 运行“php artisan storage:link”命令。然后按照上面的建议创建文件夹。更好的是,您可以保留以前的 Storage 文件夹作为备份,然后再复制 - 将 framework 文件夹粘贴到新的 Storage 路径中。
  • 我确实遇到了这个问题,并且修复工作正常,这是由于我的 subversion 产品中故意将整个框架文件夹排除在外,因为它的临时文件内容不断变化。然后在新系统上设置复制自然会导致这些文件夹不存在。以为我会分享...
  • git 不会克隆空文件夹!我将为这 3 个文件夹创建一个文件 folder.keeper。
  • 是的,因为不需要对这个文件夹进行版本控制
【解决方案2】:

试试这个:

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

【讨论】:

  • 对我不起作用。我得到了[InvalidArgumentException] Please provide a valid cache path。再次
  • 如果运行php artisan cache:clear,我会做噩梦!
  • LOL...运行此命令也会出现相同的错误
  • 在运行此命令之前。在存储/框架下创建这些文件夹:1) 会话 2) 视图 3) 缓存
【解决方案3】:

显然,当我复制我的项目时,我的存储文件夹中的框架文件夹没有复制到新目录,这导致了我的错误。

【讨论】:

  • 当我做例行公事composer update时,同样的事情也发生在我身上。目前还没有解决办法。
  • 仔细检查所有路径,确保任何地方都没有丢失的文件夹或文件。
  • 还要检查框架文件夹是否包含所有具有各自权限的子目录
  • 看来我的问题与“如果视图缓存路径为空则抛出异常。” Laravel 5.2.40 laraver.xyz/projects/Laravel/versions/v5.2.40 中的更改我无法恢复更改-升级所有作曲家或工匠后cmets 失败
  • 在我的情况下,应用程序在存储目录中缺少文件夹
【解决方案4】:

这个错误的原因可以从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;
}

构造函数由 Illuminate\View\ViewServiceProvider 中的 BladeCompiler 调用

/**
 * 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']

如果你使用标准的 laravel 结构,一般位于你的 /config/view.php 中。

<?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

存在:)

【讨论】:

  • 谢谢!这对我有用。我喜欢你完成每一步的方式。
【解决方案5】:

确保storage目录中有以下文件夹:

  • 日志
  • 框架
  • 框架/缓存
  • 框架/缓存/数据
  • 框架/会话
  • 框架/测试
  • 框架/视图

下面是一个命令行 sn-p 为你做的事情

cd storage
mkdir logs
mkdir framework
mkdir framework/cache && framework/cache/data
mkdir framework/sessions
mkdir framework/testing
mkdir framework/views
chgrp -R www-data ../storage
chown -R www-data ../storage

【讨论】:

  • 或者:``` export STORAGE_PATH='/path/tostorage/dir' mkdir -p ${STORAGE_PATH}/{logs,framework/{cache/data,sessions,testing,views}} chgrp -R www-data ${STORAGE_PATH} chown -R www-data ${STORAGE_PATH} ```
【解决方案6】:

您可以编辑您的 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

```

【讨论】:

    【解决方案7】:

    您需要在“框架”内创建文件夹。请按照以下步骤操作:

    cd storage/
    mkdir -p framework/{sessions,views,cache}
    

    您还需要设置权限以允许 Laravel 向该目录写入数据。

    chmod -R 775 framework
    chown -R www-data:www-data framework
    

    【讨论】:

    • 权限为 777 意味着同一服务器上的任何用户都可以读取、写入和执行文件。
    【解决方案8】:

    运行这些命令来创建所需的目录:

    cd storage/
    mkdir -p framework/{sessions,views,cache}
    chmod -R 777 framework
    

    就是这样!

    【讨论】:

      【解决方案9】:

      尝试以下方法:

      在 storage/framework 下创建这些文件夹:

      • 会话
      • 观看次数
      • 缓存/数据

      如果还是不行就试试

      php artisan cache:clear
      php artisan config:clear
      php artisan view:clear
      

      如果出现无法清除缓存的错误。确保在缓存/数据中创建文件夹数据

      【讨论】:

        【解决方案10】:

        检查以下文件夹是否存在,如果不存在则创建这些文件夹。

        • 存储/框架/缓存
        • 存储/框架/会话
        • 存储/框架/测试
        • 存储/框架/视图

        【讨论】:

          【解决方案11】:

          我在 storage 文件夹及其子文件夹 sessionsviews缓存

          转到您的 cmd 或终端,然后输入您的项目根路径,然后输入以下内容:

          cd storage
          mkdir framework
          cd framework
          mkdir sessions
          mkdir views
          mkdir cache
          

          再次返回您的项目根路径并运行 composer update

          在那个工匠完美地工作之后。

          【讨论】:

            【解决方案12】:
            1. 从清除缓存开始
            php artisan cache:clear
            php artisan config:clear
            php artisan view:clear
            
            1. 如果不起作用,请确保以下所有文件夹都可用
            logs
            framework
            framework/cache 
            framework/sessions 
            framework/views
            
            1. 如果所有建议都不起作用,请验证配置文件 config/view.php 是否存在。如果没有,您可以为您正在使用的 Laravel 获取此文件的副本并将其复制到项目配置文件夹中。

            【讨论】:

              【解决方案13】:

              请在终端运行,

                 sudo mkdir storage/framework
                 sudo mkdir storage/framework/sessions
                 sudo mkdir storage/framework/views
                 sudo mkdir storage/framework/cache
                 sudo mkdir storage/framework/cache/data
              

              现在您必须更改权限,

                 sudo chmod -R 777 storage
              

              【讨论】:

              • 如果要动态创建,也可以创建为,$paths = ["storage","storage/framework", "storage/framework/sessions", "storage/framework/views", "storage/framework/cache", "storage/framework/cache/data", "storage/logs", "storage/fonts"]; ` foreach( $paths as $path){` ` if (!File::isDirectory($path)) { `@ 987654324@}}
              【解决方案14】:

              第一步php artisan storage:link

              第 2 步:在 storage 文件夹中创建这些文件夹

              确保存储目录中有以下文件夹:

              logs
              framework
              framework/cache 
              framework/sessions 
              framework/views
              

              它对我有用

              【讨论】:

                【解决方案15】:

                第一步、创建这些文件夹

                • mkdir -p storage/{app,framework,logs}
                • mkdir -p storage/framework/{sessions,views,cache}
                • chmod -R 777 存储

                第二步、清除缓存/config/view

                • php artisan 缓存:清除
                • php 工匠配置:清除
                • php 工匠视图:清除

                【讨论】:

                  【解决方案16】:

                  我这边的问题(在本地主机上部署时):缺少视图文件夹.. 所以 如果您没有框架文件夹,则需要添加文件夹。 但如果已经存在框架文件夹,请确保所有上述文件夹,即 1.缓存 2. 会议 3. 意见

                  存在于您的框架目录中。

                  【讨论】:

                    【解决方案17】:

                    可能是存储文件夹没有应用和框架文件夹和必要的权限。在框架文件夹中,它包含缓存、会话、测试和视图。使用以下命令即可。

                    Use command line to go to your project root: 
                    cd {your_project_root_directory}
                    Now copy past this command as it is: 
                    cd storage && mkdir app && cd app && mkdir public && cd ../ && mkdir framework && cd framework && mkdir cache && mkdir sessions && mkdir testing && mkdir views && cd ../../ && sudo chmod -R 777 storage/
                    

                    希望这能解决你的使用问题。

                    【讨论】:

                      【解决方案18】:

                      如果这发生在服务器上:

                      sudo mkdir logs framework framework/cache framework/sessions framework/views
                      sudo chgrp -R www-data storage
                      sudo chmod -R ug+rwx storage
                      

                      【讨论】:

                        【解决方案19】:

                        我通过在index.php 中添加这一行解决了这个问题:

                        $app['config']['view.compiled'] = "storage/framework/cache";
                        

                        【讨论】:

                          【解决方案20】:

                          您的存储目录或其子目录之一可能丢失。 storage 目录必须包含 Laravel 安装附带的所有子目录。

                          【讨论】:

                            【解决方案21】:

                            在生产服务器上复制项目后,我也遇到了类似的情况。 Apache 通过符号链接访问了公用文件夹。

                            对于 Apache 或 PHP 服务,项目的路径没有改变,因此他们使用了指向旧项目存储库的缓存文件路径。

                            重启 Apache 和 PHP 服务解决了这个问题。

                            【讨论】:

                              【解决方案22】:

                              第 1 步:php artisan storage:link

                              第 2 步:在 storage 文件夹中创建这些文件夹

                              确保存储目录中有以下文件夹:

                              日志 框架 框架/缓存 框架/会话 框架/视图 它对我有用

                              这对我也有用

                              【讨论】:

                                【解决方案23】:

                                在我的例子中,配置缓存文件都在 boostrap/cache 中丢失...所以我的解决方案是 php artisan config:cache 在 boostrap/cache 中重新创建缓存文件。

                                【讨论】:

                                  【解决方案24】:

                                  我的 2 美分

                                  删除存储中的所有内容,然后执行以下操作:

                                  > cd storage/
                                  > mkdir -p framework/{sessions,views,cache}
                                  > chmod -R 777 framework
                                  
                                  // This last line depends on your user group settings so 
                                  // it may not be applicable to you.
                                  > chown -R www-data:www-data framework
                                  
                                  

                                  为我工作 =)

                                  【讨论】:

                                    【解决方案25】:

                                    错误:'请提供有效的缓存路径。'错误。

                                    如果出现这些类型错误,那么下面给出的解决方案:-

                                    请在 storage/framework/cache 中创建数据文件夹

                                    【讨论】:

                                    • 欢迎来到 Stack Overflow!请提供的答案不仅包括解决方案,还包括您如何发现这一点的至少几句话。
                                    猜你喜欢
                                    • 2016-12-20
                                    • 1970-01-01
                                    • 2021-11-25
                                    • 1970-01-01
                                    • 2021-02-18
                                    • 2019-07-27
                                    • 2016-12-13
                                    • 1970-01-01
                                    • 2021-12-31
                                    相关资源
                                    最近更新 更多