Bitte geben Sie einen gültigen Cache-Pfad an

151

Ich habe eine funktionierende Laravel-App dupliziert und in eine andere App umbenannt. Ich habe den Herstellerordner gelöscht und die folgenden Befehle erneut ausgeführt:

composer self-update

composer-update

npm install

bower install

Ich habe meine Routen und alles richtig konfiguriert, aber jetzt, wenn ich versuche, meine App in meinem Browser auszuführen, erhalte ich die folgenden Fehler:

InvalidArgumentException in Compiler.php Zeile 36: Bitte geben Sie einen gültigen Cache-Pfad an.

ErrorException in Filesystem.php, Zeile 111: file_put_contents (F: \ www \ example \ app \ storage \ framework / session / edf262ee7a2084a923bb967b938f54cb19f6b37d): Stream konnte nicht geöffnet werden: Keine solche Datei oder kein solches Verzeichnis

Ich hatte dieses Problem noch nie zuvor, ich weiß nicht, was es verursacht, und ich weiß auch nicht, wie ich es beheben kann. Ich habe online nach einer Lösung gegoogelt, aber bisher keine gefunden.

user3718908
quelle
Sie müssen die Speicherordner neu zu erstellen, sie in Ihrer .gitignore Datei sind so kopiert werden , werde nicht , wenn Sie ein Projekt klonen (wie sie nie an den Repo geschoben werden)
twigg

Antworten:

487

Versuche Folgendes:

Erstellen Sie diese Ordner unter Speicher / Framework:

  • sessions
  • views
  • cache

Jetzt sollte es funktionieren

Mauricio Wanderley Martins
quelle
21
Ich kombinierte dies mit PHP Artisan Cache: Clear und PHP Artisan Config: Clear und PHP Artisan View: Clear aus der Antwort unten und dann funktionierte es
Cja
Sie können den Speicherordner manuell löschen und den Befehl "php artisan storage: link" über cmd ausführen. Erstellen Sie dann Ordner wie oben vorgeschlagen. Besser, Sie können den vorherigen Speicherordner als Sicherung behalten und später kopieren - fügen Sie den Framework-Ordner in den neuen Speicherpfad ein.
Niladri Banerjee - Uttarpara
Ich hatte genau dieses Problem und das Problem behoben. Dies war das Ergebnis des absichtlichen Ausschlusses des gesamten Framework-Ordners von meinem Subversion-Produkt aufgrund seines ständigen temporären Inhaltswechsels. Das Einrichten des Repro auf einem neuen System führte natürlich dazu, dass diese Ordner nicht vorhanden waren. Ich dachte, ich würde teilen ...
AdamJones
3
git klont keine leeren Ordner! Ich werde eine Datei folder.keeper für diese 3 Ordner erstellen.
Tiefan Ju
Ja, weil diese Ordner nicht versioniert werden müssen
Mauricio Wanderley Martins
45

Versuche dies:

  1. php artisan cache:clear
  2. php artisan config:clear
  3. php artisan view:clear
die Gefallenen
quelle
11
Hat bei mir nicht funktioniert. Ich habe [InvalidArgumentException] Please provide a valid cache path. wieder
MattCochrane
In meinem Fall habe ich einen Albtraum bekommen, wenn ich renne php artisan cache:clear!
Ben
32

Als ich mein Projekt duplizierte, wurde der Framework-Ordner in meinem Speicherordner anscheinend nicht in das neue Verzeichnis kopiert. Dies führte zu meinem Fehler.

user3718908
quelle
Das gleiche passierte mir, als ich eine Routine machte composer update. Noch keine Lösung.
Peter
Überprüfen Sie alle Ihre Pfade und stellen Sie sicher, dass nirgendwo Ordner oder Dateien fehlen.
user3718908
4
Überprüfen Sie auch, ob der Framework-Ordner alle Unterverzeichnisse mit ihren jeweiligen Berechtigungen enthält
Manix
Es scheint, dass mein Problem etwas mit "Ausnahme auslösen, wenn der Ansichts-Cache-Pfad leer ist" zu tun hat. Änderung in Laravel 5.2.40 laraver.xyz/projects/Laravel/versions/v5.2.40 Ich kann die Änderung nicht rückgängig machen - nach dem Upgrade aller Composer oder handwerkliche Kommentare scheitern
Peter
In meinem Fall fehlten der Anwendung Ordner im Speicherverzeichnis
Chaudhry Waqas
21

Sie können Ihre readme.md mit Anweisungen zum Installieren Ihrer Laravel-App in einer anderen Umgebung wie der folgenden bearbeiten :

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

```
Alex B. Santos
quelle
Sie retten meinen Tag :)
Mankeomorakort
15

Die Ursache dieses Fehlers kann aus Illuminate \ View \ Compilers \ Compiler.php ermittelt werden

public function __construct(Filesystem $files, $cachePath)
{
    if (! $cachePath) {
        throw new InvalidArgumentException('Please provide a valid cache path.');
    }

    $this->files = $files;
    $this->cachePath = $cachePath;
}

Der Konstruktor wird von BladeCompiler unter Illuminate \ View \ ViewServiceProvider aufgerufen

/**
 * 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']);
    });
}

Verfolgen Sie also den folgenden Code weiter:

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

befindet sich normalerweise in Ihrer /config/view.php, wenn Sie die Standard-Laravel-Struktur verwenden.

<?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 (...) gibt false zurück, wenn der Pfad nicht vorhanden ist. Also aufrufen

'Please provide a valid cache path.' error.

Um diesen Fehler zu beseitigen, können Sie dies sicherstellen

storage_path('framework/views')

oder

/storage/framework/views

existiert :)

Ghabx
quelle
9

Sie müssen Ordner innerhalb von "Framework" erstellen. Bitte befolgen Sie diese Schritte:

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

Sie müssen auch Berechtigungen festlegen, damit Laravel Daten in dieses Verzeichnis schreiben kann.

chmod -R 775 framework
chown -R www-data:www-data framework
Sohail Ahmed
quelle
Mit den Berechtigungen 777 kann jeder, der Benutzer auf demselben Server ist, die Datei lesen, schreiben und ausführen.
Sohail Ahmed
1
sessionsVerzeichnis im Plural, nichtsession
Evgeniy Maynagashev
1
@ Evgeniy Maynagashev, ja du hast recht. Es war ein Tippfehler, nur die Rechtschreibung behoben. Danke
Sohail Ahmed
7

Überprüfen Sie, ob die folgenden Ordner vorhanden sind. Wenn nicht, erstellen Sie diese Ordner.

  • Speicher / Framework / Cache
  • Speicher / Framework / Sitzungen
  • Speicher / Framework / Testen
  • Speicher / Framework / Ansichten
RAMA KRISHNA
quelle
6

Ich habe das Problem gelöst, als ich einen Framework- Ordner im Speicherordner und seinen Unterordnern Sitzungen , Ansichten und Cache erstellt habe .

Gehen Sie zu Ihrem Cmd oder Terminal, geben Sie Ihren Projektstammpfad ein und geben Sie anschließend Folgendes ein:

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

Gehen Sie zurück zu Ihrem Projektstammpfad und führen Sie das Composer-Update aus

Danach arbeitet der Handwerker perfekt.

Weber
quelle
5

Versuche Folgendes:

Erstellen Sie diese Ordner unter Speicher / Framework:

  • Sitzungen
  • Ansichten
  • Cache / Daten

Wenn es immer noch nicht funktioniert, versuchen Sie es

php artisan cache:clear

Wenn der Fehler auftritt, dass der Cache nicht gelöscht werden kann. Stellen Sie sicher, dass Sie Ordnerdaten im Cache / Daten erstellen

Mohsin Younas
quelle
5

Bitte laufen Sie im 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

Jetzt müssen Sie die Berechtigung ändern,

   sudo chmod -R 777 storage
Rasheduzzaman
quelle
Wenn Sie dynamisch erstellen möchten, können Sie auch $paths = ["storage","storage/framework", "storage/framework/sessions", "storage/framework/views", "storage/framework/cache", "storage/framework/cache/data", "storage/logs", "storage/fonts"]; Folgendes erstellen: `foreach ($ path als $ path) {` `if (! File :: isDirectory ($ path)) {` File::makeDirectory($path, 0777, true, true); } }
Rasheduzzaman
2

/ path / to / laravel / storage / framework /

Sitzungsansichten-Cache

Oben ist funktionierende Lösung

Vibhuti Narayan Singh
quelle
1

Problem auf meiner Seite (während der Bereitstellung auf localhost): Es fehlte ein Ansichtsordner. Wenn Sie also nicht über den Framework-Ordner verfügen, müssen Sie Ordner hinzufügen. Wenn jedoch bereits ein Framework-Ordner vorhanden ist, stellen Sie sicher, dass alle oben genannten Ordner vorhanden sind, z. B. 1. Cache 2. Sitzung 3. Ansichten

existiert in Ihrem Framework-Verzeichnis.

Farid Abbas
quelle
0

Ich habe dieses Problem gelöst, indem ich diese Zeile in mein Feld eingefügt habe index.php:

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

Möglicherweise fehlt Ihr Speicherverzeichnis oder eines seiner Unterverzeichnisse. Das Speicherverzeichnis muss alle Unterverzeichnisse enthalten, die mit der Laravel-Installation geliefert wurden.

Naveed Ali
quelle
-1

Meine 2 Cent

Entfernen Sie alles im Speicher und gehen Sie dann folgendermaßen vor:

> 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

Arbeitete für mich =)

weißer Hase
quelle
-2

Fehler: 'Bitte geben Sie einen gültigen Cache-Pfad an.' Error.

Wenn dieser Typfehler auftritt, ist die folgende Lösung gegeben: -

Bitte erstellen Sie einen Datenordner in Speicher / Framework / Cache

user13483704
quelle
2
Willkommen bei Stack Overflow! Bitte geben Sie Antworten, die nicht nur die Lösung enthalten, sondern zumindest ein paar Worte darüber, wie Sie dies herausgefunden haben.
Zixuan