DocumentRoot must be a directory報錯

今日一臺同事的虛擬機安裝了httpd,而後修改DocumentRoot,可是不管怎麼修改都會啓動報錯DocumentRoot must be a directory。html

查看目錄權限,root的正常能夠查看到的,而後想,是否apache用戶進不了目錄(root用戶建立文件夾)。修改文件夾所屬用戶後仍是同樣報錯,沒法啓動httpd。linux

仔細想了下,linux系統貌似還有個SElinux安全機制,查看一下狀態吧。sql

[root@localhost home]# getenforce
Enforcing
果真SElinux被開啓了,並且仍是強制模式。 目錄被設成了user_home_t類型,apache的進程沒有權限,沒法訪問。針對Apache的進程所使用的SELinux target policy規定了apache的進程只能訪問httpd_sys_content_t類型的目錄或文件。因此只要修改相關的權限就能夠了。
解決辦法:
1.更改文件夾權限
  
  
  
  
  1. chcon  -t httpd_sys_content_t /home/www/ apache

  2. chcon  -t httpd_sys_content_t /home/www/html/ 安全

而後ls -Z查看目錄權限

看,權限被改成httpd_sys_content_t了吧。這樣就能夠啓動httpd了。
2.關閉SElinux
關閉SElinux的話須要重啓系統,修改方法爲:
vi /etc/selinux/config

修改SELINUX=disabled而後重啓系統就關閉SElinux了。ide

想不重啓系統的同窗能夠使用setenforce命令設置SElinux。this

#setenforce disabledspa

相關文章
相關標籤/搜索