请提供有效的缓存路径

时间:2016-07-20 14:18:49

标签: laravel laravel-5.2

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

composer self-update

composer-update

npm install

bower install

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

  

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

     

Filesystem.php第111行中的ErrorException:   file_put_contents(F:\ WWW \示例\应用\存储\框架/会话/ edf262ee7a2084a923bb967b938f54cb19f6b37d):   无法打开流:没有这样的文件或目录

我以前从来没有遇到过这个问题,我不知道是什么导致了这个问题,我也不知道如何修复它,我已经在网上搜索了一个解决方案,但到目前为止还没有找到。

24 个答案:

答案 0 :(得分:337)

试一试:

存储/框架

下创建这些文件夹
  • sessions
  • views
  • cache

现在它有效了!

答案 1 :(得分:33)

试试这个:

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

答案 2 :(得分:19)

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

答案 3 :(得分:13)

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

```

答案 4 :(得分:13)

可以从Illuminate \ View \ Compilers \ Compiler.php中找到此错误的原因

In:ip = sp.interpolate.interp2d(X,Y,Z, kind='cubic')

In:ip(x,y)
Out: 
array([[ 3.        ,  3.        ,  3.        ,  3.02397028,  3.0958811 ],
       [ 3.        ,  3.        ,  3.        ,  3.        ,  3.        ],
       [ 3.        ,  3.        ,  3.        ,  3.        ,  3.        ],
       [ 3.        ,  3.        ,  3.        ,  3.        ,  3.        ],
       [ 3.        ,  3.        ,  3.        ,  2.97602972,  2.9041189 ],
       [ 3.        ,  3.        ,  3.        ,  2.9041189 ,  2.61647559]])

In:z
Out: 
array([[ nan,  nan,   3.,   3.,   3.,   3.],
       [ nan,   3.,   3.,  nan,   3.,   3.],
       [  3.,   3.,   3.,   3.,   3.,  nan],
       [ nan,   3.,   3.,   3.,  nan,  nan],
       [ nan,  nan,   3.,  nan,  nan,  nan]])

构造函数由BladeCompiler在Illuminate \ View \ ViewServiceProvider

中调用
public function __construct(Filesystem $files, $cachePath)
{
    if (! $cachePath) {
        throw new InvalidArgumentException('Please provide a valid cache path.');
    }

    $this->files = $files;
    $this->cachePath = $cachePath;
}

因此,进一步追溯,以下代码:

/**
 * 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']);
    });
}
如果使用标准的laravel结构,

通常位于/config/view.php中。

$this->app['config']['view.compiled']
如果路径不存在,

realpath(...)将返回false。因此,调用

<?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')),
];

因此,要摆脱这个错误,你可以做的是确保

'Please provide a valid cache path.' error.

storage_path('framework/views')

存在:)

答案 5 :(得分:9)

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

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

下面是适合您的命令行摘录

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

答案 6 :(得分:8)

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

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

答案 7 :(得分:7)

我在 storage 文件夹及其子文件夹 sessions 视图缓存

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

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

再次返回项目的根路径,然后运行 composer update

那位工匠完美地工作了。

答案 8 :(得分:5)

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

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

您还需要设置权限,以允许Laravel在此目录中写入数据。

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

答案 9 :(得分:5)

请在终端中运行

   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

答案 10 :(得分:4)

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

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

就是这样!

答案 11 :(得分:3)

尝试以下操作:

在存储/框架下创建以下文件夹:

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

如果仍然无法正常运行,请尝试

ending = ddf['index'].loc[starting.index-1]

#adding first row of ddf to starting, and last row of ddf to ending
starting = pd.Series(ddf['index'].iloc[0]).append(starting)
ending = ending.append(pd.Series(ddf['index'].iloc[-1]))

#make a dataframe, each row contains starting and ending times of a group
groups = pd.DataFrame({'start':starting.reset_index(drop=True), 'end':ending.reset_index(drop=True)})

#this is groups
                 start                 end
0  2019-01-01 00:06:10 2019-01-01 00:14:55
1  2019-01-01 01:06:05 2019-01-01 01:14:50
2  2019-01-01 02:06:00 2019-01-01 02:14:55
3  2019-01-01 03:06:05 2019-01-01 03:14:55
4  2019-01-01 04:06:00 2019-01-01 04:14:55
5  2019-01-01 05:06:00 2019-01-01 05:14:50
6  2019-01-01 06:06:00 2019-01-01 06:14:45
7  2019-01-01 07:06:00 2019-01-01 07:14:50
8  2019-01-01 08:06:00 2019-01-01 08:14:55
9  2019-01-01 09:06:00 2019-01-01 09:14:55
10 2019-01-01 10:06:00 2019-01-01 10:14:55
11 2019-01-01 11:06:00 2019-01-01 11:14:55
12 2019-01-01 12:06:00 2019-01-01 12:14:55
13 2019-01-01 13:06:00 2019-01-01 13:14:55
14 2019-01-01 14:06:00 2019-01-01 14:14:55
15 2019-01-01 15:06:00 2019-01-01 15:14:55
16 2019-01-01 16:06:00 2019-01-01 16:14:55
17 2019-01-01 17:06:00 2019-01-01 17:14:55
18 2019-01-01 18:06:00 2019-01-01 18:14:55
19 2019-01-01 19:06:00 2019-01-01 19:14:55
20 2019-01-01 20:06:00 2019-01-01 20:14:55
21 2019-01-01 21:06:05 2019-01-01 21:14:55
22 2019-01-01 22:06:05 2019-01-01 22:14:55

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

答案 12 :(得分:2)

/ path / to / laravel / storage / framework /

届 意见 缓存

以上是可行的解决方案

答案 13 :(得分:2)

第1步php artisan storage:link

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

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

logs
framework
framework/cache 
framework/sessions 
framework/views

对我有用

答案 14 :(得分:1)

如果这发生在服务器上:

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

答案 15 :(得分:1)

  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 获取此文件的副本,并将其复制到项目配置文件夹中。

答案 16 :(得分:0)

您的存储目录或其子目录之一可能丢失。该存储目录必须具有Laravel安装随附的所有子目录。

答案 17 :(得分:0)

我这边的问题(在localhost上部署时):缺少views文件夹。 所以 如果没有框架文件夹,则需要添加文件夹。 但如果已经存在framework文件夹,请确保上述所有文件夹,即  1.缓存  2.会议  3.观看次数

存在于您的框架目录中。

答案 18 :(得分:0)

我通过在index.php中添加以下行来解决此问题:

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

答案 19 :(得分:0)

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

对于Apache或PHP服务,项目的路径未更改,因此他们使用了导致旧项目存储库的缓存文件路径。

重新启动Apache和PHP服务解决了该问题。

答案 20 :(得分:0)

第一步:php artisan storage:link

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

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

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

这对我也有用

答案 21 :(得分:-1)

我的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

为我工作=)

答案 22 :(得分:-1)

可能是存储文件夹没有app和framework文件夹以及必要的权限。在framework文件夹中,它包含缓存,会话,测试和视图。使用以下命令,它将起作用。

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/

我希望这可以解决您的使用问题。

答案 23 :(得分:-3)

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

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

请在存储/框架/缓存内部创建数据文件夹