apache啓動提示Document root must be a directory

解決辦法:

方法一:

把目錄或文件的策略類型改成 httpd_sys_content_t 就可以了。
# chcon  -R -h -t httpd_sys_content_t  /www/web/
然後可以用 ls -laZ 命令查看文件目錄的策略類型。


方法二:

禁用SELinux
linux系統貌似還有個SElinux安全機制,查看一下狀態吧。

[root@localhost home]# getenforce

Enforcing

果然SElinux被開啓了,而且還是強制模式。

目錄被設成了user_home_t類型,apache的進程沒有權限,無法訪問。

針對Apache的進程所使用的SELinux target policy規定了apache的進程只能訪問httpd_sys_content_t類型的目錄或文件。所以只要修改相關的權限就可以了。 解決辦法:

1.更改文件夾權限

chcon  -t httpd_sys_content_t /home/www/

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了。


++++++++++++++++++++++++++++++++++++++++++++++++


另外一篇參考文章:

apache提示DocumentRoot must be a directory

系統環境:Scientific Linux release 6.2

將DocumentRoot改爲 /home/godontop/www 後提示:

Starting httpd: Syntax error on line 293 of /etc/httpd/conf/httpd.conf:
DocumentRoot must be a directory

[root@sl ~]# getsebool -a |grep httpd_enable_homedirs

httpd_enable_homedirs --> off

原來是SELinux不允許使用home目錄作爲web目錄!

修改 SELinux 設定

view sourceprint?1 [root@sl ~]# setsebool httpd_enable_homedirs on

之後重啓apache,一切正常

[root@sl ~]# service httpd restart

Stopping httpd:                                            [  OK  ]

Starting httpd:                                            [  OK  ]


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章