解決辦法:
方法一:
把目錄或文件的策略類型改成 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 ]