Lỗi file storage/logs/laravel.log could not be opened

2nd Nov 2022
Lỗi file storage/logs/laravel.log could not be opened
Table of contents

Khi deploy Laravel project của bạn lên server, bạn có thể gặp lỗi: The stream or file "/storage/logs/laravel.log" could not be opened: failed to open stream: Permission denied như ảnh dưới.

Lỗi file storage/logs/laravel.log could not be opened

Lỗi này hầu hết nguyên nhân do user chạy Web server (nginx hoặc apache) trên server của bạn không có quyền ghi vào file file /storage/logs/laravel.log.

Để giải quyết trong trường hợp này bạn chỉ cần kiểm tra lại quyền và owner của file laravel.log trên server, thông thường sẽ là đổi owner của file laravel.log từ user bạn đang deploy sang user chạy Web Server.

Ví dụ với server chạy apache bạn có thể kiểm tra user nào đang chạy Web Server bằng lệnh ps aux | egrep '(apache|httpd)', nếu không có thay đổi gì thường sẽ là apache
Còn với server chạy nginx bạn có thể kiểm tra user nào đang chạy bằng lệnh ps aux | grep nginx và thông thường sẽ là www-data.

Lúc này bạn chỉ cần đổi lại ownser của laravel.log file bằng lệnh

cd project_root_folder_của_bạn 
#với apache 
chown  apache storage/logs/laravel.log

#với nginx 
chown www-data storage/logs/laravel.log

Lưu ý: account của bạn phải có quyền chown của file nếu không sẽ gặp lỗi Operation not permitted, bạn cần phải dùng quyền sudo hoặc root account để thay đổi owner của file.

Bạn thấy bài viết này như thế nào?
2 reactions

Add new comment

Image CAPTCHA
Enter the characters shown in the image.

Related Articles

Mỗi kết nối cơ sở dữ liệu được định nghĩa trong một mảng, với tên kết nối là khóa của mảng

Eager Loading là một kỹ thuật tối ưu hóa truy vấn cơ sở dữ liệu trong Laravel, giúp tăng tốc độ truy vấn và giảm số lượng truy vấn cần thiết để lấy dữ liệu liên quan đến một bản ghi.

Để sử dụng Eager Loading với điều kiện trong Laravel, bạn có thể sử dụng phương thức whereHas hoặc orWhereHas trong Eloquent Builder.

E hiểu đơn giản vầy nha. auth() hay Auth trong laravel là những function global hay class, nó cũng chỉ là 1 thôi

Xin chào các bạn, tuần này mình sẽ viết một bài về cách xử lý Real Time(thời gian thực) với Laravel và Pusher