Pages

Thursday, February 8, 2018

Lỗi PHP mkdir (): Permission denied problem - không thể tạo được thư mục trên CentOS 7

Mình làm đang một ứng dụng từ điển tiếng Anh hình ảnh bằng Laravel và một trong số các task của ứng dụng là tạo thư mục mới bằng function mkdir() trên PHP, tuy nhiên, hệ thống báo không thể tạo được thư mục cho thiết lập, cho dù mình thiết lập 0775 cho thư mục cha.

Hệ thống mình đang dùng là VPS, Apache, Vestacp chạy Centos 7. 

Dạo quanh phố phường thì để giải quyết, cần lưu ý là hệ thống quản lý SELinux trên Centos/Redhat làm việc hết sức chặt chẽ. Vậy, phải thiết lập để người dùng hiện tại được quyền xử lý và sau đó thiết lập cho thư mục cụ thể. 

 Dưới đây là hướng dẫn mình tìm được, chỉ cần chạy hai dòng lệnh cuối cùng là xong. 


  •  Ownership sudo chown apache: apache -R /data/www/html/sites/mysite cd /data/www/html/sites/mysite 
  • # File permissions, recursive find . -type f -exec chmod 0644 {} \; 
  • # Dir permissions, recursive find . -type d -exec chmod 0755 {} \; 
  • # SELinux serve files off Apache, resursive sudo chcon -t httpd_sys_content_t /data/www/html/sites/mysite -R 
  • # Allow write only to specific dirs
sudo chcon -t httpd_sys_rw_content_t /data/www/html/sites/mysite/logs -R 
 
sudo chcon -t httpd_sys_rw_content_t /data/www/html/sites/mysite/uploads -R 


Noted: httpd_sys_content_t – for allowing Apache to serve these contents 

httpd_sys_rw_content_t – for allowing Apache to write to those path. 

Nguồn: https://blog.lysender.com/2015/07/centos-7-selinux-php-apache-cannot-writeaccess-file-no-matter-what/ 

 Tham khảo thêm: https://stackoverflow.com/questions/5246114/php-mkdir-permission-denied-problem/21685655#21685655