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.

pengguna3718908
sumber
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

Mauricio Wanderley Martins
sumber
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
thefallen
sumber
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.

pengguna3718908
sumber
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

```
Alex B. Santos
sumber
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 :)

ghabx
sumber
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
Sohail Ahmed
sumber
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
RAMA KRISHNA
sumber
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.

Weber
sumber
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

Mohsin Younas
sumber
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
Rasheduzzaman
sumber
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
2

/ path / ke / laravel / storage / framework /

sesi melihat cache

Di atas adalah solusi yang berfungsi

Vibhuti narayan singh
sumber
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.

Farid Abbas
sumber
0

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

$app['config']['view.compiled'] = "storage/framework/cache";
crius
sumber
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.

Ali Naveed
sumber
-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 =)

kelinci putih
sumber
-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

pengguna13483704
sumber
2
Selamat Datang di Stack Overflow! Harap berikan jawaban yang mencakup tidak hanya solusi, tetapi setidaknya beberapa kata tentang bagaimana Anda menemukan ini.
zixuan