Harap berikan jalur cache yang valid


152

Saya menduplikasi aplikasi laravel yang berfungsi dan menamainya untuk digunakan untuk aplikasi lain. Saya menghapus folder vendor dan menjalankan perintah berikut lagi:

composer self-update

composer-update

npm install

bower install

Saya mengkonfigurasi rute saya dan semuanya dengan benar, tetapi sekarang ketika saya mencoba menjalankan aplikasi di browser saya, saya mendapatkan kesalahan berikut:

InvalidArgumentException di baris Compiler.php 36: Berikan jalur cache yang valid.

Baris ErrorException di Filesystem.php 111: file_put_contents (F: \ www \ example \ app \ storage \ framework / sesi / edf262ee7a2084a923bb967b938f54cb19f6b37d): gagal membuka aliran: Tidak ada file atau direktori tersebut

Saya belum pernah mengalami masalah ini sebelumnya, saya tidak tahu apa yang menyebabkannya, saya juga tidak tahu bagaimana memperbaikinya, saya telah mencari solusi di Google secara online tetapi belum menemukan satu pun sejauh ini.


Anda perlu membangun kembali folder penyimpanan, mereka ada di file .gitignore Anda sehingga tidak akan disalin ketika Anda mengkloning proyek (karena mereka tidak pernah didorong ke repo)
twigg

Jawaban:


489

Coba yang berikut ini:

buat folder ini di bawah penyimpanan / kerangka kerja:

  • sessions
  • views
  • cache

Sekarang ini seharusnya bekerja


21
Saya menggabungkan ini dengan cache artisan php: clear dan php artisan config: clear dan php artisan view: clear dari jawaban di bawah ini dan kemudian berhasil
cja

Anda dapat menghapus folder penyimpanan secara manual dan menjalankan perintah "php artisan storage: link" via cmd. Kemudian buat folder seperti yang disarankan di atas. Lebih baik Anda dapat menyimpan folder Storage sebelumnya sebagai cadangan dan kemudian menyalin - tempel folder framework di jalur Storage baru.
Niladri Banerjee - Uttarpara

Saya benar-benar mengalami masalah ini dan perbaikannya berhasil, adalah hasil dari tidak sengaja menyertakan seluruh kerangka kerangka kerja dari produk subversion saya karena konten perubahan file temporer yang konstan. Kemudian pengaturan repro pada sistem baru secara alami mengakibatkan folder ini tidak ada. Kupikir aku akan berbagi ...
AdamJones

3
git tidak mengkloning folder kosong! Saya akan membuat file folder.keeper untuk 3 folder tersebut.
Tiefan Ju

Ya, karena tidak perlu mengversi folder ini
Mauricio Wanderley Martins

46

Coba ini:

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

11
Tidak bekerja untuk saya. Saya punya [InvalidArgumentException] Please provide a valid cache path. lagi
MattCochrane

Dalam kasus saya mendapat mimpi buruk jika lari php artisan cache:clear!
Ben

32

Jadi ternyata apa yang terjadi adalah ketika saya menduplikasi proyek saya folder framework di dalam folder storage saya tidak disalin ke direktori baru, ini menyebabkan kesalahan saya.


Hal yang sama terjadi pada saya ketika saya melakukan rutinitas composer update. Belum ada solusi.
Peter

Periksa ulang semua jalur Anda dan pastikan tidak ada folder atau file yang hilang di mana pun.
user3718908

4
juga periksa apakah folder framework memiliki semua subdirektori dengan izinnya masing-masing
manix

Tampaknya masalah saya ada hubungannya dengan "Melempar pengecualian jika path cache view kosong." Ubah Laravel 5.2.40 laraver.xyz/projects/Laravel/versions/v5.2.40 Saya tidak dapat mengembalikan perubahan - setelah meningkatkan semua komposer atau komentar tukang gagal
Peter

dalam aplikasi kasus saya ada folder yang hilang di dalam dir penyimpanan
Chaudhry Waqas

21

Anda dapat mengedit readme.md Anda dengan instruksi untuk menginstal aplikasi laravel Anda di lingkungan lain seperti ini:

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

```

Anda menghemat hari saya :)
Mankeomorakort

15

Penyebab kesalahan ini dapat ditelusuri dari 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 dipanggil oleh BladeCompiler di 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']);
    });
}

Jadi, telusuri lebih jauh, kode berikut:

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

umumnya terletak di /config/view.php Anda, jika Anda menggunakan struktur laravel standar.

<?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 (...) mengembalikan false, jika jalur tidak ada. Demikian, memohon

'Please provide a valid cache path.' error.

Karena itu, untuk menghilangkan kesalahan ini, apa yang dapat Anda lakukan adalah memastikan hal itu

storage_path('framework/views')

atau

/storage/framework/views

ada :)


11

Anda perlu membuat folder di dalam "framework". Silakan Ikuti langkah-langkah ini:

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

Anda juga perlu mengatur izin untuk mengizinkan Laravel menulis data dalam direktori ini.

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

Dengan izin 777 berarti bahwa siapa pun yang merupakan pengguna di server yang sama dapat membaca, menulis, dan mengeksekusi file.
Sohail Ahmed

1
sessionsdirektori dalam kasus jamak, bukansession
Evgeniy Maynagashev

1
@ Evgeniy Maynagashev, Ya Anda benar. Itu kesalahan ketik, baru saja memperbaiki ejaan. Terima kasih
Sohail Ahmed

7

Periksa apakah folder berikut ada, jika tidak membuat folder ini.

  • penyimpanan / framework / cache
  • penyimpanan / kerangka kerja / sesi
  • penyimpanan / kerangka kerja / pengujian
  • penyimpanan / kerangka / tampilan

6

Saya memecahkan masalah ketika saya membuat folder framework di dalam folder penyimpanan dan sesi subfoldernya , pandangan dan cache .

Buka cmd atau terminal Anda lalu ketikkan path root proyek Anda dan setelah itu ketikkan yang berikut:

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

Kembali ke jalur root proyek Anda kembali dan jalankan pembaruan komposer

Setelah itu tukang bekerja dengan sempurna.


6

Coba yang berikut ini:

buat folder ini di bawah penyimpanan / kerangka kerja:

  • sesi
  • dilihat
  • cache / data

jika tetap tidak berhasil maka coba

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

jika mendapatkan kesalahan karena tidak dapat menghapus cache. Pastikan untuk membuat data folder dalam cache / data


5

Silakan jalankan di 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

Sekarang Anda harus mengubah izin,

   sudo chmod -R 777 storage

Jika Anda ingin membuat secara dinamis, Anda juga dapat membuat sebagai, $paths = ["storage","storage/framework", "storage/framework/sessions", "storage/framework/views", "storage/framework/cache", "storage/framework/cache/data", "storage/logs", "storage/fonts"]; `foreach ($ paths sebagai $ path) {` `if (! File :: isDirectory ($ path)) {` File::makeDirectory($path, 0777, true, true); } }
Rasheduzzaman


1

Masalah di sisi saya (saat menggunakan di localhost): ada folder views yang hilang .. jadi jika Anda belum memiliki folder framework, Anda harus menambahkan folder. tetapi jika sudah ada folder framework maka pastikan semua folder di atas yaitu 1. cache 2. sesi 3. view

ada di direktori framework Anda.


0

Saya memecahkan masalah ini dengan menambahkan baris ini di index.php:

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

0

Direktori penyimpanan Anda mungkin hilang, atau salah satu dari sub-direktori. Direktori penyimpanan harus memiliki semua sub-direktori yang dikirimkan bersama dengan instalasi Laravel.


-1

2 sen saya

Hapus semua yang ada di dalam penyimpanan dan lakukan ini:

> 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

Bekerja untuk saya =)


-2

Kesalahan: 'Berikan jalur cache yang valid.' kesalahan.

Jika jenis kesalahan ini datang maka solusi yang diberikan di bawah ini: -

silakan buat folder data di dalam storage / framework / cache


2
Selamat Datang di Stack Overflow! Harap berikan jawaban yang mencakup tidak hanya solusi, tetapi setidaknya beberapa kata tentang bagaimana Anda menemukan ini.
zixuan
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.