有効なキャッシュパスを入力してください


152

機能しているlaravelアプリを複製し、別のアプリで使用できるように名前を変更しました。ベンダーフォルダーを削除して、次のコマンドを再度実行します。

composer self-update

composer-update

npm install

bower install

ルートとすべてを適切に構成しましたが、ブラウザーでアプリを実行しようとすると、次のエラーが発生します。

Compiler.phpの36行目のInvalidArgumentException:有効なキャッシュパスを指定してください。

Filesystem.php行111のErrorException:file_put_contents(F:\ www \ example \ app \ storage \ framework / sessions / edf262ee7a2084a923bb967b938f54cb19f6b37d):ストリームを開けませんでした:そのようなファイルまたはディレクトリはありません

これまでにこの問題が発生したことはありません。何が原因であるかわからず、修正方法もわかりません。オンラインで解決策を探しましたが、今のところ何も見つかりません。


ストレージフォルダーを再構築する必要があります。それらは.gitignoreファイルにあるため、プロジェクトを複製するときにコピーされません(リポジトリにプッシュされないため)
twigg

回答:


488

以下を試してください:

storage / frameworkの下にこれらのフォルダーを作成します

  • sessions
  • views
  • cache

今それはうまくいくはずです


21
私はこれをphp artisan cache:clearとphp artisan config:clearとphp artisan view:clearと組み合わせて、以下の回答からそれを機能させました
cja

ストレージフォルダーを手動で削除し、cmdを介して「php artisan storage:link」コマンドを実行できます。次に、上記のようにフォルダを作成します。以前のストレージフォルダーをバックアップとして保存し、後でコピーして、フレームワークフォルダーを新しいストレージパスに貼り付けることをお勧めします。
Niladri Banerjee-Uttarpara 2017年

私は正確にこの問題を抱えており、修正は機能しました。コンテンツが常に変化する一時ファイルのために、フレームワークフォルダー全体を故意にsubversion製品から除外した結果です。次に、新しいシステムで再現を設定すると、当然これらのフォルダーが存在しなくなります。私が共有すると思いました...
アダムジョーンズ

3
gitは空のフォルダーのクローンを作成しません!これらの3つのフォルダー用にファイルfolder.keeperを作成します。
Tiefan Ju 2018

はい、このフォルダのバージョン管理は必要ないため
Mauricio Wanderley Martins

45

これを試して:

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

11
私のために働いていませんでした。わかった[InvalidArgumentException] Please provide a valid cache path。再び
MattCochrane

私の場合、実行すると悪夢になりますphp artisan cache:clear
ベン

32

つまり、プロジェクトを複製しているときに、ストレージフォルダー内のフレームワークフォルダーが新しいディレクトリにコピーされなかったため、エラーが発生したようです。


ルーティンをやっていたときにも同じことが起こりましたcomposer update。まだ解決策はありません。
Peter

すべてのパスを再確認し、欠落しているフォルダーやファイルがないことを確認してください。
user3718908 2016

4
また、フレームワークフォルダーに、それぞれの権限を持つすべてのサブディレクトリがあるかどうかを確認します
manix

私の問題は、「ビューキャッシュパスが空の場合は例外をスローする」と関係があるようです。Laravel5.2.40での変更または職人のコメントが失敗する
Peter

私の場合、アプリケーションにはストレージディレクトリ内のフォルダがありませ
んでした

21

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

```

あなたは私の日を保存します:)
Mankeomorakort 2018

15

このエラーの原因は、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

存在します:)


9

「フレームワーク」内にフォルダを作成する必要があります。次の手順に従ってください:

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

また、Laravelがこのディレクトリにデータを書き込めるように権限を設定する必要があります。

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

777のアクセス許可を使用すると、同じサーバー上のユーザーであるすべてのユーザーがファイルの読み取り、書き込み、および実行を行うことができます。
Sohail Ahmed

1
sessions複数形ではなくディレクトリsession
Evgeniy Maynagashev

1
@Evgeniy Maynagashev、はい、そうです。これはタイプミスでした。スペルを修正しただけです。ありがとう
Sohail Ahmed

7

以下のフォルダが存在するか確認し、存在しない場合は作成してください。

  • ストレージ/フレームワーク/キャッシュ
  • ストレージ/フレームワーク/セッション
  • ストレージ/フレームワーク/テスト
  • ストレージ/フレームワーク/ビュー

6

以下を試してください:

storage / frameworkの下にこれらのフォルダーを作成します。

  • セッション
  • 景色
  • キャッシュ/データ

それでもうまくいかない場合は、試してください

php artisan cache:clear

キャッシュをクリアできないというエラーが発生した場合。cache / dataにフォルダーデータを作成してください


6

ストレージフォルダーとそのサブフォルダーのセッションビューキャッシュ内にフレームワークフォルダーを作成したときに問題を解決しました。

cmdまたはターミナルに移動し、プロジェクトのルートパスを入力してから、次のように入力します。

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

プロジェクトのルートパスに戻り、composer updateを実行します

その後、職人は完璧に機能します。


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

動的に作成する場合は、 $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)){` File::makeDirectory($path, 0777, true, true); } }
Rasheduzzaman


1

私の側の問題(localhostへの展開中):ビューフォルダーがありませんでした。フレームワークフォルダーがない場合は、フォルダーを追加する必要があります。ただし、すでにフレームワークフォルダが存在する場合は、上記のすべてのフォルダ、つまり1.キャッシュ2.セッション3.ビューを確認してください。

フレームワークディレクトリに存在します。


0

私はこの行をmyに追加することでこの問題を解決しましたindex.php

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

0

ストレージディレクトリがないか、そのサブディレクトリの1つである可能性があります。ストレージディレクトリには、Laravelインストールに同梱されているすべてのサブディレクトリが必要です。


-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

私のために働いた=)


-2

エラー:「有効なキャッシュパスを指定してください。」エラー。

これらのタイプのエラーが発生した場合、以下に示す解決策:

storage / framework / cache内にデータフォルダを作成してください


2
Stack Overflowへようこそ!解決策だけでなく、これをどのようにして見つけたのかについて少なくともいくつかの言葉を含む回答を提供してください。
zixuan
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.