Vui lòng cung cấp đường dẫn bộ đệm hợp lệ


152

Tôi đã sao chép một ứng dụng laravel hoạt động và đổi tên nó để sử dụng cho một ứng dụng khác. Tôi đã xóa thư mục nhà cung cấp và chạy lại các lệnh sau:

composer self-update

composer-update

npm install

bower install

Tôi đã định cấu hình các tuyến đường của mình và mọi thứ một cách chính xác tuy nhiên bây giờ khi tôi cố chạy ứng dụng của mình trong trình duyệt, tôi gặp các lỗi sau:

UnlimitedArgumentException trong Compiler.php dòng 36: Vui lòng cung cấp đường dẫn bộ đệm hợp lệ.

ErrorException trong tập tin Filesystem.php 111: file_put_contents (F: \ www \ example \ app \ Storage \ framework / session / edf262ee7a2084a923bb967b938f54cb19f6b37d): không thể mở luồng:

Tôi chưa bao giờ gặp phải vấn đề này trước đây, tôi không biết điều gì gây ra nó và tôi cũng không biết cách khắc phục, tôi đã tìm kiếm trực tuyến để tìm giải pháp nhưng cho đến nay vẫn chưa tìm thấy.


Bạn cần xây dựng lại các thư mục lưu trữ, chúng nằm trong tệp .gitignore của bạn để không bị sao chép khi bạn sao chép dự án (vì chúng không bao giờ được đẩy vào repo)
twigg

Câu trả lời:


488

Hãy thử như sau:

tạo các thư mục này trong bộ lưu trữ / khung:

  • sessions
  • views
  • cache

Bây giờ nó sẽ làm việc


21
Tôi đã kết hợp điều này với bộ đệm nghệ thuật php:
Clear

Bạn có thể xóa thư mục lưu trữ theo cách thủ công và chạy lệnh "php artisan Storage: link" qua cmd. Sau đó tạo thư mục như đề xuất ở trên. Tốt hơn bạn có thể giữ thư mục Lưu trữ trước đó làm bản sao lưu và sao chép sau - dán thư mục khung vào đường dẫn Lưu trữ mới.
Niladri Banerjee - Uttarpara

Tôi đã có chính xác vấn đề này và đã khắc phục được, là kết quả của việc cố tình loại trừ toàn bộ thư mục khung khỏi sản phẩm lật đổ của tôi do nội dung thay đổi tệp tạm thời liên tục của nó. Sau đó, thiết lập repro trên một hệ thống mới tự nhiên dẫn đến các thư mục này không tồn tại. Tôi muốn chia sẻ ...
AdamJones

3
git không sao chép các thư mục trống! Tôi sẽ tạo một thư mục file.keeper cho 3 thư mục đó.
Tiefan Ju

Có, bởi vì không cần phiên bản các thư mục này
Mauricio Wanderley Martins

45

Thử cái này:

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

11
Không làm việc cho tôi. Tôi nhận được [InvalidArgumentException] Please provide a valid cache path. một lần nữa
MattCochrane

Trong trường hợp của tôi có một cơn ác mộng nếu chạy php artisan cache:clear!
Ben

32

Vì vậy, rõ ràng những gì đã xảy ra khi tôi sao chép dự án của mình, thư mục khung trong thư mục lưu trữ của tôi không được sao chép vào thư mục mới, điều này gây ra lỗi của tôi.


Điều tương tự cũng xảy ra với tôi khi tôi đang làm một thói quen composer update. Chưa có giải pháp nào.
Peter

Kiểm tra kỹ tất cả các đường dẫn của bạn và đảm bảo không có thư mục hoặc tệp bị thiếu ở bất cứ đâu.
dùng3718908

4
đồng thời kiểm tra xem thư mục khung có tất cả các thư mục con có quyền tương ứng hay không
manix

Có vẻ như vấn đề của tôi đã xảy ra với "Ném ngoại lệ nếu xem đường dẫn bộ đệm trống." Thay đổi trong Laravel 5.2.40 laraver.xyz/projects/Laravel/versions/v5.2.40 Tôi không thể hoàn nguyên thay đổi - sau khi nâng cấp tất cả trình soạn thảo hoặc bình luận của nghệ nhân thất bại
Peter

trong trường hợp ứng dụng của tôi bị thiếu các thư mục bên trong thư mục lưu trữ
Chaudhry Waqas

21

Bạn có thể chỉnh sửa readme.md của mình với các hướng dẫn để cài đặt ứng dụng laravel của bạn trong môi trường khác như thế này:

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

```

bạn tiết kiệm trong ngày của tôi :)
Mankeomorakort

15

Nguyên nhân của lỗi này có thể được truy tìm từ 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;
}

Hàm tạo được BladeCompiler gọi trong 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']);
    });
}

Vì vậy, truy tìm lại, mã sau đây:

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

thường nằm trong /config/view.php của bạn, nếu bạn sử dụng cấu trúc laravel tiêu chuẩn.

<?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 (...) trả về false, nếu đường dẫn không tồn tại. Như vậy, gọi

'Please provide a valid cache path.' error.

Do đó, để thoát khỏi lỗi này, điều bạn có thể làm là đảm bảo rằng

storage_path('framework/views')

hoặc là

/storage/framework/views

tồn tại :)


9

Bạn cần tạo các thư mục bên trong "khung". Hãy làm theo các bước sau:

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

Bạn cũng cần đặt quyền để cho phép Laravel ghi dữ liệu trong thư mục này.

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

Với quyền của 777 có nghĩa là bất kỳ ai là người dùng trên cùng một máy chủ đều có thể đọc, ghi và thực thi tệp.
Sohail Ahmed

1
sessionsthư mục trong trường hợp số nhiều, khôngsession
Evgeniy Maynagashev

1
@Evgeniy Maynagashev, vâng bạn đúng. Đó là lỗi đánh máy, chỉ sửa lỗi chính tả. Cảm ơn
Sohail Ahmed

7

Kiểm tra nếu các thư mục sau tồn tại, nếu không tạo các thư mục này.

  • lưu trữ / khung / bộ đệm
  • lưu trữ / khung / phiên
  • lưu trữ / khung / kiểm tra
  • lưu trữ / khung / lượt xem

6

Tôi giải quyết vấn đề khi tôi tạo ra khuôn khổ thư mục bên trong lưu trữ thư mục và thư mục con của nó phiên , quan điểmbộ nhớ cache .

Đi đến cmd hoặc terminal của bạn sau đó nhập đường dẫn gốc dự án của bạn và sau đó gõ như sau:

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

Chuyển đến đường dẫn gốc dự án của bạn một lần nữa và chạy cập nhật trình soạn thảo

Sau đó nghệ nhân làm việc hoàn hảo.


5

Hãy thử như sau:

tạo các thư mục này trong bộ lưu trữ / khung:

  • phiên
  • lượt xem
  • bộ nhớ cache / dữ liệu

nếu vẫn không được thì hãy thử

php artisan cache:clear

nếu gặp lỗi không thể xóa bộ nhớ cache. Đảm bảo tạo dữ liệu thư mục trong bộ đệm / dữ liệu


5

Hãy chạy trong thiết bị đầu cuối,

   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

Bây giờ bạn phải thay đổi quyền,

   sudo chmod -R 777 storage

Nếu bạn muốn tạo động, bạn cũng có thể tạo as, $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); } }
Rashinguzzaman

2

/ đường dẫn / đến / laravel / lưu trữ / khung /

phiên xem bộ đệm

Trên đây là giải pháp làm việc


1

Vấn đề về phía tôi (trong khi triển khai trên localhost): thiếu thư mục lượt xem .. vì vậy nếu bạn không có thư mục khung thì bạn sẽ cần thêm thư mục. nhưng nếu thư mục khung đã tồn tại thì hãy đảm bảo tất cả các thư mục trên tức là 1. cache 2. session 3. view

tồn tại trong thư mục khung của bạn.


0

Tôi đã giải quyết vấn đề này bằng cách thêm dòng này vào index.php:

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

0

Thư mục lưu trữ của bạn có thể bị thiếu hoặc một trong các thư mục con của nó. Thư mục lưu trữ phải có tất cả các thư mục con được gửi cùng với bản cài đặt Laravel.


-1

2 xu của tôi

Xóa mọi thứ bên trong bộ lưu trữ và sau đó làm điều này:

> 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

Làm việc cho tôi =)


-2

Lỗi: 'Vui lòng cung cấp đường dẫn bộ đệm hợp lệ.' lỗi.

Nếu những lỗi loại này xuất hiện thì giải pháp được đưa ra dưới đây: -

vui lòng tạo thư mục dữ liệu trong bộ nhớ / framework / cache


2
Chào mừng bạn đến với Stack Overflow! Vui lòng cung cấp câu trả lời không chỉ bao gồm giải pháp, mà ít nhất là một vài từ về cách bạn phát hiện ra điều này.
zixuan
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.