Chinaunix

标题: Document root must be a directory错误解决的办法 [打印本页]

作者: micht767    时间: 2012-04-05 18:59
标题: Document root must be a directory错误解决的办法
起先错误提示如下:
[shiys@localhost conf]$ sudo service httpd restart
停止 httpd:[确定]
正在启动 httpd:Syntax error on line 292 of /etc/httpd/conf/httpd.conf:
DocumentRoot must be a directory[失败]

然后可以用 ls -laZ 命令查看文件目录的策略类型。
[shiys@localhost html]$ ls -laZ
drwxr-xr-x. root root system_ubject_r:httpd_sys_content_t:s0 .
drwxr-xr-x. root root system_ubject_r:httpd_sys_content_t:s0 ..
-rwxr-xr-x. root root unconfined_ubject_r:httpd_sys_content_t:s0 test.cgi
-rwxr-xr-x. root root unconfined_ubject_r:httpd_sys_content_t:s0 test.jsp
-rw-r--r--. root root unconfined_ubject_r:httpd_sys_content_t:s0 test.php
-rw-r--r--. root root unconfined_ubject_r:httpd_sys_content_t:s0 test.php~
drwxrwxr-x. root root unconfined_ubject_r:user_home_t:s0 ysjy

原因如下:这是系统起了SELinux的策略。把目录或文件设成了user_home_t类型,因此apache的进程没有权限,无法访问。针对Apache的进程所使用的SELinux target policy规定了apache的进程只能访问httpd_sys_content_t类型的目录或文件。
解决办法:
把目录或文件的策略类型改成 httpd_sys_content_t 就可以了。
#sudo chcon  -R -h -t httpd_sys_content_t  /var/www/html/ysjy
#ls -laZ
[shiys@localhost html]$ ls -laZ
drwxr-xr-x. root root system_ubject_r:httpd_sys_content_t:s0 .
drwxr-xr-x. root root system_ubject_r:httpd_sys_content_t:s0 ..
-rwxr-xr-x. root root unconfined_ubject_r:httpd_sys_content_t:s0 test.cgi
-rwxr-xr-x. root root unconfined_u:object_r:httpd_sys_content_t:s0 test.jsp
-rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 test.php
-rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 test.php~
drwxrwxr-x. root root unconfined_u:object_r:httpd_sys_content_t:s0 ysjy

最后,再执行
[shiys@localhost images]$ sudo service httpd restart
停止 httpd:[确定]
正在启动 httpd:[确定]

所有的问题就是因为这个。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2