web-dev-qa-db-ja.com

Laravel 5 show ErrorException file_put_contentsがストリームを開けませんでした:そのようなファイルまたはディレクトリはありません

Laravel 5にプロジェクトがあり、オフィスと自宅でも仕事をしています。正常に動作しますが、最近では自宅で動作しなくなりました。 Laravel 2つのErrorExceptionを表示

file_put_contents(G:\project\storage\framework\views/751d8a0fd8a7d4138c09ceb6a34bb377aa2d6265.php):
failed to open stream: No such file or directory

そして

file_put_contents(G:\project\storage\framework/sessions/aIXycR4LIAUBVIqZu0T590paOMIpV8vfZGIroEp0):
failed to open stream: No such file or directory

Googleで問題の決定を検索し、正しい権利に関する情報を見つけています。すべてのアドバイスはLinuxについてですが、私はWindowsでオフィスと自宅でも働いています。

アプリケーションキャッシュをクリアしてキャッシュを表示しようとすると、職人が私に話をします-...クリアしました。ただし、キャッシュデータとビューはストレージに存在します。

この問題を修正するにはどうすればよいですか?

前もって感謝します!

43
Evgeniy

いくつかの調査の後、非常によく似ていますが、ルートプロジェクトの場所が異なり、/bootstrap/cacheにキャッシュされています。キャッシュクリアプロジェクトが開始された後。

30
Evgeniy

この問題を解決する最良の方法は、「laravel/bootstrap/cache」ディレクトリに移動し、config.phpファイルを削除することです。または、config.php.oldのように名前を変更することもできます。問題は修正されます。ハッピーコーディング:-)

73
Amit Verma

通常、実動デプロイメントルーチンの一部としてphp artisan config:cacheコマンドを実行する必要があります。私はあなたをお勧めします

  1. 構成キャッシュファイルを削除する
  2. アプリケーションキャッシュをフラッシュする
  3. 構成の読み込みを高速化するキャッシュファイルを作成する

これを行うには、コマンドラインで次のArtisanコマンドを実行します

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

サーバーのコマンドラインにアクセスできない場合は、ルートに次を追加して、プログラムでコマンドを実行できます。

Route::get('/clear-cache', function() {
    $exitCode = Artisan::call('config:clear');
    $exitCode = Artisan::call('cache:clear');
    $exitCode = Artisan::call('config:cache');
    return 'DONE'; //Return anything
});

そして、ブラウザからclear-cacheルートを呼び出します。

これがお役に立てば幸いです。

38
Elisha Senoo

このタイプの問題は、通常、あるサーバーを別のサーバーに、あるフォルダーを別のフォルダーに移行するときに発生します。 Laravelは、フォルダーが異なる場合にキャッシュと構成(ファイル名)を保持するため、この問題が発生します。

ソリューション次のコマンドを実行:

php artisan config:cache

https://laravel.com/docs/5.6/configuration#configuration-caching

4

Windows上のApache + WSL

これは馬鹿げた間違いであり、他の回答とは異なる答えですが、私に起こったので追加します。

WSL(Windows上のLinux bash)を使用してlaravelアプリケーションを管理し、windowsApacheを使用してサーバーを実行し、 wslは、セッションおよび他のフォルダーへのwindowsパスではなく、linuxパスを保存します。

解決

WSLではなくpowershellでキャッシュクリアコマンドを実行するだけです。

$ php artisan optimize

私には十分でした。

3
Azeirah

実際、プロジェクトをサーバーからローカルに移動したときにこの問題に直面しました。

ストレージ/フレームワーク

4つの基本フォルダーには、キャッシュ、セッション、テスト、ビューが必要です

私の場合、欠落しているセッションはgitignoreにある可能性があります。

そのため、セッションフォルダーを手動で作成し、ブラウザーを更新しましたが、動作していました。

したがって、この問題を削除すると、不足しているフォルダーはすべて解決できます。

3
shivanikoko

コマンドラインにアクセスできない共有ホスティングの場合、laravel/bootstrap/cacheフォルダーに移動し、config.phpを削除(または名前変更)するだけで完了です!

2

これらのエラーに役立つこれらのコマンドを試してください

path\project\storage\framework\views ...

php artisan view:clear

path\project\storage\framework/sessions ...

php artisan config:cache
1
Carlos Avalos

私の場合、それはphpアーティザンコマンドで修正できるものではありませんでした。問題は、/ storageフォルダーのフォルダー権限です。エラーはそれを明確にしませんでした。

0
Peter Drinnan

この問題の理由は、localhostのキャッシュファイルです。それによると、プロジェクトのキャッシュをクリアするために次のようにいくつかのことを試しましたが、失敗するたびに。

  • Web.phpファイル(職人コード付き)を変更してcaheコマンドをクリアしようとしました
  • SSHを接続して(PuTTY経由で)キャッシュをクリアしようとしました
  • 新しいPublicディレクトリを作成するサブドメインでプロジェクトをホストしようとしました

そのため、上記の各ステップがすべて失敗した後、この問題の解決策を見つけました。 host_route/bootstrap/cacheディレクトリのcache.phpファイルを削除しました。

この答えがあなたの問題に役立つと思います。

0
Roshan Aravinda

composerファイルに問題がある可能性があります。あなたが試すことができます:

  • composer installcomposer.lockに従ってベンダーパッケージをインストールします(または、composer.lockが存在しない場合は作成します)。
  • composer updateは常にcomposer.lockを再生成し、composer.jsonに基づいて利用可能なパッケージの最新バージョンをインストールします

  • composer dump-autoloadは物をダウンロードしません。プロジェクト(autoload_classmap.php)に含める必要があるすべてのクラスのリストを再生成するだけです。プロジェクト内に新しいクラスがある場合に最適です。 Webページの読み込みを高速化するには、composer dump-autoload -oを実行するのが理想的です。デフォルトではない唯一の理由は、生成に少し時間がかかるためです(ただし、わずかにしか認識されません)

ソース

0