Laravel 5 hiển thị ErrorException file_put_contents không thể mở luồng: Không có tệp hoặc thư mục nào như vậy


84

Tôi có một dự án trên Laravel 5 và tôi làm việc với nó tại văn phòng và ở nhà. Nó hoạt động tốt, nhưng gần đây ở nhà nó đã ngừng hoạt động. Laravel chỉ cho tôi hai ErrorException

file_put_contents(G:\project\storage\framework\views/751d8a0fd8a7d4138c09ceb6a34bb377aa2d6265.php):
failed to open stream: No such file or directory

file_put_contents(G:\project\storage\framework/sessions/aIXycR4LIAUBVIqZu0T590paOMIpV8vfZGIroEp0):
failed to open stream: No such file or directory

Tôi đang tìm kiếm quyết định vấn đề với Google và tìm thông tin về các quyền chính xác. Mọi lời khuyên đều là về Linux, nhưng tôi cũng đang làm việc với Windows tại văn phòng và ở nhà.

Khi tôi cố gắng xóa bộ nhớ cache của ứng dụng và xem bộ nhớ cache, nghệ nhân nói chuyện với tôi - ... đã xóa. Nhưng dữ liệu bộ nhớ cache và các chế độ xem có trong bộ nhớ.

Làm cách nào để khắc phục sự cố này?

Cảm ơn trước!


6
Bạn có thể thử làm sạch bộ nhớ cache "php Artian cache: clear" Tôi đang sử dụng Linux, vì vậy tôi không chắc chắn về quyền trên windows, nhưng hãy kiểm tra thuộc tính thư mục nếu nó không phải read_only (nhấp chuột phải vào thư
mục-

@educolo Tôi không nghĩ vấn đề là về quyền thư mục, vì vài tháng rồi nó vẫn ổn.
Evgeniy

Câu trả lời:


148

Cách tốt nhất để giải quyết vấn đề này là vào thư mục laravel/bootstrap/cachevà xóa config.phptệp. hoặc bạn có thể đổi tên nó cũng như config.php.old và vấn đề của bạn sẽ được khắc phục. Chúc bạn viết mã vui vẻ :-)


7
Có, điều đó sẽ hữu ích, nhưng xóa bộ nhớ cache có thể thực hiện công việc. Chạy bên ngoài Hộp Vagrant php artisan config:cachesẽ xây dựng lại đường dẫn cho các ứng dụng. Khi chúng tôi đang chạy ứng dụng bên trong hộp vagrant, các đường dẫn khác với đường dẫn cho các bài kiểm tra hoàng hôn chẳng hạn.
George Mylonas

Tại sao config của laravel làm cho laravel chết? Hoạt động cảm ơn.
Andrew

config: cache không sửa được vì một số lý do.
Andrew

Sạch sẽ, đơn giản và trực tiếp cho những người không thể truy cập qua SSH tại thời điểm đó hoặc nói chung. Câu trả lời chính xác!
lzoesch

cấu hình: công trình rõ ràng cho tôi bên cạnh đổi tên các tập tin làm việc quá,
Mohammed Omer

65

Bạn thường nên chạy php artisan config:cachelệnh như một phần của quy trình triển khai sản xuất của mình. Như một giải pháp cho vấn đề của bạn, tôi khuyên bạn nên tạo lại tệp bộ đệm để tải cấu hình nhanh hơn.

Để thực hiện việc này, hãy chạy các lệnh Artisan sau trên dòng lệnh của bạn

  • php artisan cache:clear
  • php artisan config:cache

Bạn có thể thực thi lệnh theo chương trình bằng cách thêm phần sau vào các tuyến của mình:

Route::get('/clear-cache', function() {
    $exitCode = Artisan::call('cache:clear');
    $exitCode = Artisan::call('config:cache');
    return 'DONE'; //Return anything
});

Và sau đó gọi clear-cachetuyến đường từ trình duyệt của bạn.

Tôi hy vọng điều này là hữu ích.


49

Sau một số nghiên cứu, tôi hiểu - tôi có các vị trí dự án gốc rất giống nhau, nhưng khác nhau và nó được lưu vào bộ nhớ đệm /bootstrap/cache. Sau khi dự án xóa bộ nhớ cache bắt đầu.


này giải quyết vấn đề của tôi, sau nhiều giải pháp đề nghị thất bại, cảm ơn bạn
Agung Sagita

@AgungSagita không vấn đề gì;)
Evgeniy

bạn là một cuộc sống tiết kiệm
Festus Yuma

Điều này đã giải quyết được vấn đề của tôi, sau khi đã thử nhiều lựa chọn thay thế khác. Cảm ơn :)
binmosa

Mong muốn tôi đã thấy điều này vì nó là câu trả lời cho câu hỏi của tôi về một nhà cung cấp dịch vụ mất tích: stackoverflow.com/questions/58192052/...
j3py

14

Trên thực tế, tôi gặp phải vấn đề này khi chuyển dự án của mình từ máy chủ sang cục bộ.

trong

lưu trữ / khuôn khổ

bốn thư mục cơ bản được yêu cầu bộ nhớ cache, phiên, thử nghiệm, chế độ xem

Trong trường hợp của tôi, các phiên bị thiếu có thể ở trong gitignore.

Vì vậy, tôi đã tạo thủ công thư mục phiên và làm mới trình duyệt và nó đang hoạt động.

Vì vậy, bất kỳ thư mục nào bị thiếu nếu chúng tôi xóa vấn đề này có thể được giải quyết.


3
Cái này là đúng
Ahmad Al Jamil Rasyid


6

Apache + WSL trên windows

Đây là một sai lầm ngớ ngẩn và một câu trả lời khác so với những câu khác, nhưng tôi sẽ thêm nó vì nó đã xảy ra với tôi.

Nếu bạn sử dụng WSL (cơ sở linux trên windows) để quản lý ứng dụng laravel của mình, trong khi sử dụng windows apache để chạy máy chủ, thì việc chạy bất kỳ lệnh bộ nhớ đệm nào trong wsl sẽ lưu trữ đường dẫn linux thay vì đường dẫn windows đến các phiên và các thư mục khác .

Giải pháp

Chỉ cần chạy các lệnh xóa bộ nhớ cache trong powershell, thay vì trong WSL.

$ php artisan optimize

Đối với tôi là đủ.


Tôi gặp phải vấn đề tương tự. Tôi đang chạy Windows và cũng là một phiên bản của Linux trên máy ảo VMWare. Điều này cho phép tôi kiểm tra cả trên Windows và Linux, nhưng khi tôi chạy php artisan config:cachelệnh trên Windows, Linux của tôi sẽ không tải các trang web của ứng dụng nữa. Đi vào thư mục bootstrap / cache và xóa tệp config.php ở đó đã giải quyết được nó.
David Tran

4

Hãy thử với những lệnh hữu ích với những lỗi đó

path \ project \ storage \ framework \ views ...

php artisan view:clear

path \ project \ storage \ framework / session ...

php artisan config:cache

2
Nếu bạn đăng một câu trả lời mới trong khi có đã nhiều câu trả lời upvoted, bạn nên thêm một số giải thích nhiều đến nó như vậy mà những người khác có thể học hỏi từ câu trả lời của bạn
Nico Haase

4

Trong trường hợp chia sẻ lưu trữ khi bạn không có quyền truy cập dòng lệnh, chỉ cần điều hướng đến thư mục laravel / bootstrap / cache và xóa (hoặc đổi tên) config.php và bạn đã hoàn tất!


2

Cách tốt nhất để giải quyết vấn đề này là vào thư mục laravel/bootstrap/cachevà xóa tất cả các tệp khỏi bộ nhớ cache.

Để thực hiện việc này, hãy chạy các lệnh Artisan sau trên dòng lệnh của bạn
1. php artisan config:clear
2. php artisan cache:clear
3. php artisan config:cache

Trong bảng điều khiển hoặc máy chủ của mình, bạn có thể thực hiện các lệnh bằng cách thêm các lệnh sau vào các tuyến của mình:

    Route::get('/clear-cache', function() {
        $run = Artisan::call('config:clear');
        $run = Artisan::call('cache:clear');
        $run = Artisan::call('config:cache');
        return 'FINISHED';  
    });

Và sau đó gọi  www.yourdomain.com/clear-cache tuyến đường từ trình duyệt của bạn.


2

Thay đổi tên của /bootstrap/cache/config.php thành config.php.old không hoạt động đối với tôi và cũng không xóa bộ nhớ cache bằng các lệnh thủ công

  1. php Artian config: clear
  2. php bộ nhớ cache nghệ nhân: rõ ràng
  3. php Artian config: cache

Và vì một số lý do kỳ lạ, tôi không thể thay đổi quyền cho chủ sở hữu trên các thư mục, vì vậy giải pháp của tôi là chạy IDE (Visual Studio Code) của tôi với tư cách là quản trị viên và mọi thứ đều hoạt động.

Dự án của tôi nằm trong đường dẫn F: / của một đĩa khác.


1

Có thể có sự cố với tệp trình soạn nhạc của bạn. Bạn có thể thử:

  • composer install cài đặt các gói của nhà cung cấp theo composer.lock (hoặc tạo composer.lock nếu không có),
  • composer update luôn tạo composer.lock và cài đặt phiên bản mới nhất của các gói có sẵn dựa trên composer.json

  • composer dump-autoload sẽ không tải xuống một thứ. Nó chỉ tạo lại danh sách tất cả các lớp cần được đưa vào dự án (autoload_classmap.php). Lý tưởng khi bạn có một lớp học mới bên trong dự án của mình. Lý tưởng nhất là bạn thực hiện kết xuất trình tổng hợp-autoload -o, để tải các trang web của bạn nhanh hơn. Lý do duy nhất khiến nó không phải là mặc định, là vì nó mất nhiều thời gian hơn để tạo (nhưng chỉ đáng chú ý một chút)

nguồn


Thật không may, nó đã không giúp đỡ. Tôi cố gắng tất cả lời khuyên của bạn.
Evgeniy

Xin lỗi :( Bạn đã nói trong bài đăng ban đầu của mình rằng bạn nghĩ đó có thể là quyền / quyền. Bài đăng này có nhiều thông tin về việc thay đổi quyền đối với tệp và thư mục nếu bạn cho rằng đó có thể là vấn đề. Tôi không làm việc với cửa sổ vì vậy tôi không biết nhiều về điều đó Hope nó hoạt động ra cho bạn..
Rachael MacKeigan

Tôi không nghĩ vấn đề là về quyền thư mục, bởi vì vài tháng nó đã ổn. Như tôi nhớ, tôi đã cập nhật một số gói Laravel trước đó và sau đó nó ngừng hoạt động. Nhưng ngày hôm sau tại dự án văn phòng bắt đầu tốt.
Evgeniy

1

Lý do cho vấn đề này là các tệp bộ nhớ cache trong localhost. Theo đó, tôi đã thử một số cách như sau để xóa bộ nhớ cache trong dự án của mình, nhưng lần nào tôi cũng thất bại.

  • Đã cố gắng xóa các lệnh cahe bằng cách thay đổi tệp web.php (với mã thủ công)
  • Đã cố gắng xóa bộ nhớ cache bằng cách kết nối SSH (qua PUTTY)
  • Đã cố gắng lưu trữ dự án của tôi trong Sub domain trong tạo một thư mục Public mới

Vì vậy, tôi đã tìm ra giải pháp cho vấn đề này sau khi mỗi bước trên không thành công và nó hoạt động hoàn hảo cho tôi. Tôi đã xóa tệp cache.php trong thư mục host_route / bootstrap / cache .

Tôi nghĩ câu trả lời này sẽ giúp ích cho vấn đề của bạn.


1

Trong trường hợp của tôi, nó không phải là bất cứ thứ gì có thể sửa được bằng các lệnh của php artist. Vấn đề là quyền đối với thư mục / lưu trữ. Lỗi đã không làm rõ điều đó.


1

Nếu bạn đang chạy laravel bên trong docker thì hãy truy cập hệ thống tệp của nó

$ docker exec -it name-of-laravel-container /bin/bash

Tiếp theo điều hướng đến thư mục gốc dự án laravel của bạn. Đảm bảo rằng bạn có bộ nhớ / khuôn khổ bên trong thư mục :

  1. bộ nhớ đệm
  2. phiên họp
  3. thử nghiệm
  4. lượt xem

Và chúng phải có thể đọc được và ghi được.


1

Tôi đã giải quyết vấn đề này bằng cách tạo storage\framework\sessionsthư mục.


0

Tôi đã gặp vấn đề tương tự vì .gitignore cho /storage thư mục trên máy đầu tiên, sau đó kho lưu trữ được nhân bản trên máy thứ hai và laravel đang sửa đổi để ghi xuống bộ đệm phiên

Vì vậy, tạo thư mục theo cách thủ công /storage/sessionscó thể là một giải pháp ..


0

giải pháp phù hợp với tôi là chỉ cung cấp ứng dụng với tư cách là quản trị viên nếu bạn là

  1. trên machoặc linuxsử dụngsudo php artisan serve
  2. trên windows, hãy thử mở CMDdưới dạng một adminstratorvà sau đó đi đến thư mục dự án và chạyphp artisan serve

0

Xóa nội dung của storage/framework/cacheđã lừa cho tôi. Không có gì khác hoạt động ...


0

Tôi đã sử dụng Laravel 8, Đây là giải pháp của tôi

Goto: storage / framework / cache / data
set dữ liệu thư mục quyền là 777

Nó làm việc cho tôi


0

Điều này đã làm nên điều kỳ diệu cho tôi. bộ nhớ chmod -Rf 0777

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.