Veuillez fournir un chemin de cache valide
J'ai dupliqué une application Laravel et l'ai renommée pour l'utiliser pour une autre application. J'ai supprimé le dossier du fournisseur et exécutez à nouveau les commandes suivantes:
composer self-update
composer-update
npm install
bower install
, j'ai configuré mes itinéraires et tout correctement mais maintenant, quand j'essaie de lancer mon appli dans mon navigateur, j'obtiens les erreurs suivantes:
InvalidArgumentException dans le compilateur.php ligne 36: veuillez fournir un chemin de cache valide.
ErrorException dans le système de fichiers.php ligne 111: file_put_contents(F:wwwexampleappstorageframework/sessions/edf262ee7a2084a923bb967b938f54cb19f6b37d): impossible d'ouvrir le flux: aucun fichier ou répertoire de ce type
Je n'ai jamais eu ce problème auparavant, je ne sais pas ce qui le cause et je ne sais pas comment le réparer, j'ai googlé en ligne pour une solution mais j'en ai trouvé aucune jusqu'à présent.
5 réponses
Essayez-le:
Créer ces dossiers sous stockage/cadre:
sessions
views
cache
Maintenant son travaillé!
, Essayez ceci:
php artisan cache:clear
php artisan config:clear
php artisan view:clear
Donc, apparemment, ce qui s'est passé était quand je dupliquais mon projet, le dossier framework dans mon dossier de stockage n'a pas été copié dans le nouveau répertoire, ce qui cause mon erreur.
Vous pouvez modifier votre readme.md avec des instructions pour installer votre application laravel dans un autre environnement comme celui-ci:
## 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
```
La cause de cette erreur peut être tracée à partir de 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;
}
Le constructeur est appelé par BladeCompiler dans Illuminate\View\ViewServiceProvider
/**
* 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']);
});
}
Donc, en retraçant plus loin, le code suivant:
$this->app['config']['view.compiled']
Se trouve généralement dans votre/config / view.php, Si vous utilisez la structure laravel standard.
<?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')),
];
La fonction Realpath(...) renvoie false, si le chemin n'existe pas. Ainsi, en invoquant
'Please provide a valid cache path.' error.
Par conséquent, à se débarrasser de cette erreur, ce que vous pouvez faire est de s'assurer que
storage_path('framework/views')
Ou
/storage/framework/views
Existe :)