Podaj prawidłową ścieżkę do pamięci podręcznej


152

Skopiowałem działającą aplikację laravel i zmieniłem jej nazwę na inną aplikację. Usunąłem folder dostawcy i ponownie uruchomiłem następujące polecenia:

composer self-update

composer-update

npm install

bower install

Skonfigurowałem swoje trasy i wszystko poprawnie, ale teraz, gdy próbuję uruchomić aplikację w przeglądarce, pojawiają się następujące błędy:

InvalidArgumentException w linii Compiler.php 36: Podaj prawidłową ścieżkę do pamięci podręcznej.

ErrorException w linii Filesystem.php 111: file_put_contents (F: \ www \ example \ app \ storage \ framework / session / edf262ee7a2084a923bb967b938f54cb19f6b37d): nie udało się otworzyć strumienia: Brak takiego pliku lub katalogu

Nigdy wcześniej nie miałem tego problemu, nie wiem, co go powoduje, ani nie wiem, jak go naprawić, szukałem rozwiązania w Internecie, ale jak dotąd go nie znalazłem.


Musisz odbudować foldery przechowywania, są one w pliku .gitignore, więc nie zostaną skopiowane podczas klonowania projektu (ponieważ nigdy nie są
przenoszone

Odpowiedzi:


488

Spróbuj wykonać następujące czynności:

utwórz te foldery w pamięci / strukturze:

  • sessions
  • views
  • cache

Teraz powinno działać


21
Połączyłem to z pamięcią podręczną php artisan: clear i php artisan config: clear i php artisan view: wyczyść z odpowiedzi poniżej, a potem zadziałało
cja

Możesz ręcznie usunąć folder przechowywania i uruchomić polecenie „php artisan storage: link” przez cmd. Następnie utwórz foldery zgodnie z powyższą sugestią. Lepiej jest zachować poprzedni folder magazynu jako kopię zapasową, a później skopiować - wklej folder struktury w nowej ścieżce magazynu.
Niladri Banerjee - Uttarpara

Miałem dokładnie ten problem i poprawka zadziałała, była wynikiem celowego wykluczenia całego folderu frameworka z mojego produktu Subversion z powodu ciągłej zmiany zawartości pliku tymczasowego. Skonfigurowanie reprodukcji w nowym systemie oczywiście spowodowało, że te foldery nie istniały. Pomyślałem, że podzielę się ...
AdamJones

3
git nie klonuje pustych folderów! Utworzę plik folder.keeper dla tych 3 folderów.
Tiefan Ju

Tak, ponieważ nie trzeba wersjonować tych folderów
Mauricio Wanderley Martins

45

Spróbuj tego:

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

11
Nie działa dla mnie. Mam [InvalidArgumentException] Please provide a valid cache path. ponownie
MattCochrane

W moim przypadku mam koszmar, jeśli uciekniesz php artisan cache:clear!
Ben

32

Najwyraźniej to, co się stało, było, gdy duplikowałem mój projekt, folder framework w moim folderze przechowywania nie został skopiowany do nowego katalogu, co spowodowało mój błąd.


To samo przytrafiło mi się, kiedy wykonywałem rutynę composer update. Na razie brak rozwiązania.
Peter

Dokładnie sprawdź wszystkie ścieżki i upewnij się, że nigdzie nie ma brakujących folderów ani plików.
user3718908

4
sprawdź także, czy folder framework ma wszystkie podkatalogi z odpowiednimi uprawnieniami
manix

Wygląda na to, że mój problem ma coś wspólnego z "Wyrzuć wyjątek, jeśli ścieżka pamięci podręcznej widoku jest pusta". Zmiana w Laravel 5.2.40 laraver.xyz/projects/Laravel/versions/v5.2.40 Nie mogę cofnąć zmiany - po aktualizacji wszystkie Composer lub komentarze rzemieślników zawodzą
Peter

w moim przypadku w aplikacji brakowało folderów w pamięci reż.
Chaudhry Waqas

21

Możesz edytować plik readme.md, korzystając z instrukcji instalacji aplikacji laravel w innym środowisku, takim jak to:

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

Przyczynę tego błędu można znaleźć w 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;
}

Konstruktor jest wywoływany przez BladeCompiler w 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']);
    });
}

Więc śledząc dalej, następujący kod:

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

znajduje się zazwyczaj w twoim /config/view.php, jeśli używasz standardowej struktury 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 (...) zwraca wartość false, jeśli ścieżka nie istnieje. Tak więc wzywając

'Please provide a valid cache path.' error.

Dlatego, aby pozbyć się tego błędu, możesz to zrobić

storage_path('framework/views')

lub

/storage/framework/views

istnieje :)


10

Musisz utworzyć foldery wewnątrz „frameworka”. Wykonaj następujące kroki:

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

Musisz także ustawić uprawnienia, aby umożliwić Laravel zapisywanie danych w tym katalogu.

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

Z uprawnieniami 777 oznacza, że ​​każdy, kto jest użytkownikiem tego samego serwera, może czytać, zapisywać i wykonywać plik.
Sohail Ahmed

1
sessionskatalog w liczbie mnogiej, niesession
Evgeniy Maynagashev

1
@Evgeniy Maynagashev, Tak, masz rację. To był błąd literowy, po prostu poprawiłem pisownię. Dzięki
Sohail Ahmed

7

Sprawdź, czy istnieją następujące foldery, jeśli nie, utwórz te foldery.

  • przechowywanie / framework / cache
  • przechowywanie / framework / sesje
  • przechowywanie / framework / testowanie
  • przechowywanie / ramy / widoki

6

Rozwiązałem problem, kiedy utworzyłem folder framework w folderze magazynu i jego podfolderach sesjach , widokach i pamięci podręcznej .

Przejdź do swojego cmd lub terminala, a następnie wpisz ścieżkę do katalogu głównego projektu, a następnie wpisz:

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

Wróć do ścieżki głównej projektu i uruchom aktualizację kompozytora

Po tym rzemieślnik działa doskonale.


6

Spróbuj wykonać następujące czynności:

utwórz te foldery w pamięci / strukturze:

  • sesje
  • wyświetlenia
  • pamięć podręczna / dane

jeśli nadal nie działa, spróbuj

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

jeśli pojawi się błąd, że nie można wyczyścić pamięci podręcznej. Upewnij się, że utworzyłeś dane folderu w pamięci podręcznej / danych


5

Uruchom w terminalu,

   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

Teraz musisz zmienić uprawnienia,

   sudo chmod -R 777 storage

Jeśli chcesz tworzyć dynamicznie, możesz również utworzyć jako, $paths = ["storage","storage/framework", "storage/framework/sessions", "storage/framework/views", "storage/framework/cache", "storage/framework/cache/data", "storage/logs", "storage/fonts"]; `foreach ($ path as $ path) {` `if (! File :: isDirectory ($ path)) {` File::makeDirectory($path, 0777, true, true); } }
Rasheduzzaman

2

/ ścieżka / do / laravel / storage / framework /

pamięć podręczna widoków sesji

Powyżej znajduje się działające rozwiązanie


1

Problem po mojej stronie (podczas wdrażania na hoście lokalnym): brakowało folderu views ... więc jeśli nie masz folderu framework, będziesz musiał dodać foldery. ale jeśli już istnieje folder framework, upewnij się, że wszystkie powyższe foldery tj. 1. pamięć podręczna 2. sesja 3. widoki

istnieje w twoim katalogu frameworka.


0

Rozwiązałem ten problem, dodając tę ​​linię w moim index.php:

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

0

Być może brakuje Twojego katalogu przechowywania lub jednego z jego podkatalogów. Katalog przechowywania musi zawierać wszystkie podkatalogi dostarczone z instalacją Laravel.


-1

Moje 2 centy

Usuń wszystko z pamięci, a następnie zrób to:

> 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

Pracował dla mnie =)


-2

Błąd: „Podaj prawidłową ścieżkę pamięci podręcznej”. błąd.

Jeśli wystąpi błąd tego typu, rozwiązanie podane poniżej: -

proszę utworzyć folder danych w pamięci / strukturze / pamięci podręcznej


2
Witamy w Stack Overflow! Podaj odpowiedzi, które zawierają nie tylko rozwiązanie, ale przynajmniej kilka słów o tym, jak się tego dowiedziałeś.
zixuan
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.