CentOS + Laravel error: Permission denied in /vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php:107

0

Trong quá trình cài đặt Laravel trên môi trường CentOS 7, tôi đã gặp phải vấn đề về permission denied cho file laravel.log và folder /bootstrap/cache. Cụ thể là đoạn lỗi dưới đây:

 

Trong quá trình tìm hiểu tôi đã tìm ra được vấn đề. Đó là SELinux trên môi trường CentOS, SELinux được cài mặc định khi sử dụng ProfitBricks CentOS 7 image. Để tìm hiểu SELinux là gì các bạn có thể xem tại đây.

Tiếp theo tôi sẽ giải quyết lỗi Permission denied  khi cài Laravel.
Đầu tiên phải kiểm tra xem SELinux có đang được bật trên server của bạn không:

Và kết quả trả về sẽ tương tự như này:

 

Nếu SELinux status enable và Current mode enforcing thì cách phương pháp dưới đây sẽ giải quyết vấn đề bạn đang gặp phải.

Lỗi này có thể được gây ra bởi ownership với folder và file, security context đang được thực hiện bởi SELinux trên một vài folder mà Laravel cần ghi vào. Tôi có thể giải quyết vấn đề này bằng cách chạy:

Điều này thay đổi quyền sở hữu của những thư mục đó thành apache.

Để giải quyết vấn đề SELinux, chúng ta cần cập nhật security context từ httpd_sys_content_t thành httpd_sys_rw_content_t. Điều này có thể được thực hiện bằng cách chạy semanage, đây là một phần của gói policycoreutils-python. (Bạn có thể cài đặt nó bằng lệnh sudo yum install policycoreutils-python nếu cần, nhưng nó đã được cài đặt khi sử dụng image của CentitBricks CentOS 7.)

 

Để apply những thay đổi đó, chạy lệnh:

Cuối cùng bạn chạy lệnh ls -Z để xem những thay đổi với folder và file. Bạn sẽ thấy storage hiển thị httpd_sys_rw_content_t thay vì httpd_sys_content_t. Điều tương tự cũng đúng với các thư mục trong bootstrap.

Bây giờ bạn có thể load lại website và xem kết quả.

Goodluck!

 

Nguồn tham khảo: Profitbricks

About Author

Là một developer rất ham chơi nhưng không ham hố, không ham chơi nhưng rất thích cầm đầu...

Leave a Reply

%d bloggers like this: