Chủ Nhật, 17 tháng 1, 2016

Khắc phục lỗi: PHP failed to open stream: Permission denied

Hôm trước tôi có cài một máy chủ mới, hệ điều hành là CentOS 7.2 với PHP 5.4 và MySQL 2.5, vì vấn đề bảo mật nên tôi có cài thêm SFTP để truyền và chỉnh file mà không lo lắng thằng nào nó nhòm ngó được, tuy nhiên sau khi viết một script để thêm User cùng domain vào thì tôi gặp phải vấn đề cực đau đầu:
#1, Không thể tạo file trong PHP


Dùng hàm nào cũng không thể tạo được file bằng PHP
Tôi có kiểm tra Apache xem nó đang chạy với User nào, thấy CentOS chạy nó với User là Apache và Group là Apache luôn, tôi thử Chmod toàn bộ file trong folder và folder về 755 rồi 777 nhưng không được, đổi Owner sang Apache cũng không được !
#2, Tôi cài thử WordPress, trời nó chạy cực nhanh và gọn, tuy nhiên nó lại gặp vấn đề lớn, đó là không thể upload ảnh lên được !
Tôi dùng đủ mọi cách, chuyển Owner của folder sang Apache để cho apache chạy nhưng nó không chạy, đọc LOG của PHP thì thấy có cái log này:
[Wed Jan 13 11:17:25.552550 2016] [:error] [pid 11034] [client 14.182.81.245:54075] 
PHP Warning:  file_put_contents(./x.log): 
failed to open stream: Permission denied in /home/xxxxxx/upload.php on line 2
Lại là cái lỗi chết tiệt là Permission denied, tôi thử viết một script khác để debug thì thấy PHP đã upload file lên folder mặc định là /tmp nhưng hình như nó không có quyền để move_file_upload() sang bên folder mới, làm sao bi giờ ?
Lên StackOverflow hỏi thì hàng chục câu trả lời toàn cái dạng:
  • Bạn đã Chmod chưa ?
  • Bạn đã đổi Owner Ship về Apache chưa ?
  • Bạn đã …
Ôi chẳng cái nào dùng được, cuối cùng có một bác bên Centos vào trả lời như sau:
1, Kiểm tra các cấu hình của SElinux cho Httpd bằng lệnh:
getsebool -a | grep httpd
Nếu bạn thấy dòng này:
httpd_unified --> Off
Thì đánh dòng lệnh này để bật nó lên, mọi lỗi sẽ hết:
setsebool -P httpd_unified 1
Còn nếu bạn không muốn PHP có thể upload, làm ngược lại, tắt cái httpd_unified đi là xong !
Ôi con mama thằng chó đó, một ngày trời mình không làm được hóa ra lại đơn giản vậy !
Chúc cả nhà thành công !

Không có nhận xét nào:

Đăng nhận xét