Fornisci un percorso cache valido


152

Ho duplicato un'app laravel funzionante e l'ho rinominata per usarla per un'altra app. Ho eliminato la cartella del fornitore ed eseguito di nuovo i seguenti comandi:

composer self-update

composer-update

npm install

bower install

Ho configurato i miei percorsi e tutto correttamente, tuttavia ora quando provo a eseguire la mia app nel mio browser ottengo i seguenti errori:

InvalidArgumentException nella riga 36 di Compiler.php: fornire un percorso cache valido.

ErrorException in Filesystem.php linea 111: file_put_contents (F: \ www \ esempio \ app \ archiviazione \ framework / sessioni / edf262ee7a2084a923bb967b938f54cb19f6b37d): impossibile aprire il flusso: nessun file o directory

Non ho mai avuto questo problema prima, non so che cosa lo stia causando, né so come risolverlo, ho cercato su internet una soluzione ma finora non ne ho trovato nessuno.


Devi ricostruire le cartelle di archiviazione, sono nel tuo file .gitignore, quindi non copiarle quando clonerai un progetto (dato che non vengono mai
trasferite

Risposte:


489

Prova quanto segue:

creare queste cartelle in archivio / framework:

  • sessions
  • views
  • cache

Ora dovrebbe funzionare


21
L'ho combinato con php artisan cache: clear e php artisan config: clear e php artisan view: clear dalla risposta qui sotto e poi ha funzionato
cja

Puoi eliminare manualmente la cartella di archiviazione ed eseguire il comando "php artisan storage: link" tramite cmd. Quindi creare le cartelle come suggerito sopra. Meglio è possibile mantenere la cartella di archiviazione precedente come backup e successivamente copiarla: incollare la cartella del framework nel nuovo percorso di archiviazione.
Niladri Banerjee - Uttarpara,

Ho avuto esattamente questo problema e la correzione ha funzionato, è stato il risultato dell'esclusione deliberata dell'intera cartella framework dal mio prodotto di sovversione a causa del suo costante cambio temporaneo di contenuti. Quindi, l'impostazione della riproduzione su un nuovo sistema ha comportato naturalmente che queste cartelle non esistessero. Pensavo di condividere ...
Adam Jones

3
git non clona cartelle vuote! Creerò un file folder.keeper per quelle 3 cartelle.
Tiefan Ju,

Sì, perché non è necessario modificare la versione di queste cartelle
Mauricio Wanderley Martins,

46

Prova questo:

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

11
Non ha funzionato per me. Ho capito [InvalidArgumentException] Please provide a valid cache path. di nuovo
MattCochrane

Nel mio caso ho avuto un incubo se scappato php artisan cache:clear!
Ben

32

Quindi apparentemente quello che è successo è stato quando stavo duplicando il mio progetto, la cartella del framework all'interno della mia cartella di archiviazione non è stata copiata nella nuova directory, questo ha causato il mio errore.


La stessa cosa mi è successa quando stavo facendo una routine composer update. Nessuna soluzione ancora.
Peter,

Ricontrolla tutti i tuoi percorsi e assicurati che non ci siano cartelle o file mancanti ovunque.
user3718908

4
controlla anche se la cartella framework ha tutte le sottodirectory con le rispettive autorizzazioni
manix

Sembra che il mio problema abbia a che fare con "Genera eccezione se il percorso della cache della vista è vuoto". Modifica in Laravel 5.2.40 laraver.xyz/projects/Laravel/versions/v5.2.40 Non riesco a ripristinare la modifica - dopo l'aggiornamento di tutto il compositore o i commenti degli artigiani falliscono
Peter,

nel mio caso mancavano le cartelle nella cartella di archiviazione
Chaudhry Waqas,

21

Puoi modificare il file readme.md con le istruzioni per installare l'app laravel in altri ambienti come questo:

## 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

```

mi salvi il giorno :)
Mankeomorakort,

15

La causa di questo errore può essere rintracciata da 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;
}

Il costruttore è invocato da BladeCompiler in 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']);
    });
}

Quindi, risalendo ulteriormente, il seguente codice:

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

si trova generalmente nel tuo /config/view.php, se usi la struttura 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 (...) restituisce false, se il percorso non esiste. Quindi, invocando

'Please provide a valid cache path.' error.

Pertanto, per sbarazzarsi di questo errore, quello che puoi fare è assicurarlo

storage_path('framework/views')

o

/storage/framework/views

esiste :)


11

Devi creare cartelle all'interno di "framework". Si prega di seguire questi passaggi:

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

È inoltre necessario impostare le autorizzazioni per consentire a Laravel di scrivere i dati in questa directory.

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

Con le autorizzazioni di 777 significa che chiunque sia un utente sullo stesso server può leggere, scrivere ed eseguire il file.
Sohail Ahmed,

1
sessionsdirectory in plurale, nonsession
Evgeniy Maynagashev

1
@Evgeniy Maynagashev, Sì, hai ragione. È stato un errore di battitura, appena corretto l'ortografia. Grazie
Sohail Ahmed l'

7

Controlla se esistono le seguenti cartelle, se non crea queste cartelle.

  • stoccaggio / quadro / cache
  • stoccaggio / quadro / sessions
  • stoccaggio / quadro / test
  • stoccaggio / quadro / views

6

Ho risolto il problema quando ho creato la cartella framework all'interno della cartella di archiviazione e delle relative sessioni , viste e cache delle sottocartelle .

Vai al tuo cmd o terminale quindi digita il percorso root del tuo progetto e dopo digita quanto segue:

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

Torna al percorso principale del tuo progetto ed esegui l' aggiornamento del compositore

Dopo questo artigiano funziona perfettamente.


6

Prova quanto segue:

creare queste cartelle in archivio / framework:

  • sessioni
  • visualizzazioni
  • cache / dati

se continua a non funzionare, provare

php artisan cache:clear
php artisan config:clear
php artisan view:clear

se viene visualizzato un errore di impossibile svuotare la cache. Assicurati di creare una cartella di dati nella cache / dati


5

Per favore corri nel terminal,

   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

Ora devi cambiare l'autorizzazione,

   sudo chmod -R 777 storage

Se vuoi creare dinamicamente, puoi anche creare come, $paths = ["storage","storage/framework", "storage/framework/sessions", "storage/framework/views", "storage/framework/cache", "storage/framework/cache/data", "storage/logs", "storage/fonts"]; `foreach ($ percorsi come $ percorso) {` `if (! File :: isDirectory ($ percorso)) {` File::makeDirectory($path, 0777, true, true); } }
Rasheduzzaman

2

/ Path / to / laravel / stoccaggio / quadro /

cache visualizzazioni sessioni

Sopra è la soluzione funzionante


1

Problema dalla mia parte (durante la distribuzione su localhost): mancava la cartella delle viste .. quindi se non si dispone della cartella del framework è necessario aggiungere cartelle. ma se esiste già una cartella di framework, assicurarsi che tutte le cartelle sopra es. 1. cache 2. sessione 3. visualizzazioni

esiste nella directory del framework.


0

Ho risolto questo problema aggiungendo questa riga nel mio index.php:

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

0

La directory di archiviazione potrebbe essere mancante o una delle sue sottodirectory. La directory di archiviazione deve contenere tutte le sottodirectory fornite con l'installazione di Laravel.


-1

I miei 2 centesimi

Rimuovi tutto l'archiviazione e quindi esegui questa operazione:

> 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

Ha funzionato per me =)


-2

Errore: "Fornire un percorso cache valido." errore.

Se viene visualizzato questo tipo di errore, la soluzione indicata di seguito:

crea una cartella di dati all'interno di storage / framework / cache


2
Benvenuto in Stack Overflow! Fornisci risposte che includano non solo la soluzione, ma almeno alcune parole su come l'hai scoperto.
zixuan,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.