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

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

Related article