web-dev-qa-db-fra.com

Veuillez fournir un chemin de cache valide

J'ai dupliqué une application laravel de travail et l'ai renommée pour l'utiliser pour une autre application. J'ai supprimé le dossier du fournisseur et relancer les commandes suivantes:

composer self-update

composer-update

npm install

bower install

J'ai configuré mes itinéraires et tout correctement, mais maintenant, lorsque j'essaie d'exécuter mon application dans mon navigateur, les erreurs suivantes sont générées:

InvalidArgumentException dans Compiler.php, ligne 36: Indiquez un chemin de cache valide.

ErrorException dans Filesystem.php, ligne 111: content_put_contents (F:\www\example\app\storage\framework/sessions/edf262ee7a2084a923bb967b967f54cb19f6b37d): échec de l'ouverture du 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 ni comment y remédier, j'ai consulté Google en ligne pour trouver une solution, mais je n'en ai trouvé aucun.

105
user3718908

Donc, apparemment, lorsque je dupliquais mon projet, le dossier d'infrastructure à l'intérieur de mon dossier de stockage n'était pas copié dans le nouveau répertoire, ce qui était à l'origine de mon erreur.

22
user3718908

Essayez ce qui suit:

créer ces dossiers sous storage/framework:

  • sessions
  • views
  • cache

Maintenant ça devrait marcher

369

Essaye ça:

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

Vous pouvez éditer votre readme.md avec les 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

```
15
Alex B. Santos

La cause de cette erreur peut être recherché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, remontant plus loin, le code suivant:

$this->app['config']['view.compiled']

est généralement situé dans votre /config/view.php, si vous utilisez la structure standard laravel.

<?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 (...) renvoie false si le chemin n'existe pas. Ainsi, en invoquant

'Please provide a valid cache path.' error.

Par conséquent, pour vous débarrasser de cette erreur, vous pouvez vous assurer que

storage_path('framework/views')

ou

/storage/framework/views

existe :)

13
ghabx

Problème de mon côté (lors du déploiement sur localhost): il y avait un dossier de vues manquant .. donc si vous n'avez pas le dossier framework, vous devrez ajouter des dossiers. mais si le dossier de structure existe déjà, assurez-vous que tous les dossiers ci-dessus sont: 1. cache 2. session 3. vues

existe dans votre répertoire framework.

0
Farid Abbas

J'ai résolu ce problème en ajoutant cette ligne dans mon index.php:

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