作業中のlaravelアプリを複製し、別のアプリで使用するように名前を変更しました。ベンダーフォルダを削除して、次のコマンドをもう一度実行しました。
composer self-update
composer-update
npm install
bower install
私は自分のブラウザで自分のアプリを実行しようとすると、今私は自分のルートとすべてを正しく設定しました私は次のエラーが出ます:
36行目のCompiler.phpのInvalidArgumentException:有効なキャッシュパスを指定してください。
Filesystem.php 111行目のErrorException:file_put_contents(F:¥www¥example¥app¥storage¥framework/sessions/edf262ee7a2084a923bb967b938f54cb19f6b37d):ストリームが開けませんでした:そのようなファイルまたはディレクトリはありません
私は前にこの問題を抱えたことがない、私はそれが何を引き起こしているのか私には解決方法をわからない。
だから私のプロジェクトを複製していたとき、どうやら私のストレージフォルダ内のフレームワークフォルダが新しいディレクトリにコピーされていなかったのです。これが私のエラーの原因です。
それを試してみてください:
storage/frameworkの下にこれらのフォルダを作成します。
sessions
views
cache
今ではうまくいった!
これを試して:
php artisan cache:clear
php artisan config:clear
php artisan view:clear
あなたは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
```
このエラーの原因は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
存在します:)
私の側の問題(localhostにデプロイ中):ビューズフォルダーがありませんでした。フレームワークフォルダーがない場合は、フォルダーを追加する必要があります。ただし、既にフレームワークフォルダーが存在する場合は、上記のすべてのフォルダー、つまり1.キャッシュ2.セッション3.ビューを確認してください。
フレームワークディレクトリに存在します。
index.php
に次の行を追加して、この問題を解決しました。
$app['config']['view.compiled'] = "storage/framework/cache";