解决httpd.conf:DocumentRoot must be a directory报错问题

今天在修改了一下httpd.conf文件的DocumentRoot目录后重启了httpd服务,却发现报错了。 DocumentRoot must be a directory 。刚开始以为是自己配置有问题,后来检查了好一遍并确认配置的DocumentRoot就是一个directory啊。哎,只好baidu一下了。呵呵, 看来遇到过这种报错的人还真不少啊。总结起来有两种可能导致了DocumentRoot must be a directory报错。

1、DocumentRoot的目录配置中带有中文

如果你的DocumentRoot目录设置中有中文的话,请先修改成英文的试试吧。哈哈……如果还不行的话就请接着往下看吧。

2、SELinux的安全策略搞得鬼啊

这是因为系统启用了SELinux安全策略之后会把目录或文件设成各种类型, 如home_root_t和user_home_t类型等。因些apache的进程就没有权限而无法访问你刚才设置的DocumentRoot了。针对 Apache的进程SELinux的安全策略规定只能访问 httpd_sys_content_t类型的目录或文件。所以把目录或文件的策略类型改成httpd_sys_content_t就可以了。修改命令如 下:

chcon -R -h -t httpd_sys_content_t /data/coderbolg/ 

可以用  ls -laZ 来查看目录的策略类型是否修改成功。做好了这一步如果还报错,呵呵……那还得往下看。

3、禁用SELinux

如果你真的被SELinux折磨的没有办法了。那就直接禁用SELinux吧。系统的不安全总比服务器不能访问的权重要低些吧。直接编辑SELinux的配置文件。

vim /etc/sysconfig/selinux

把SELINUX的值从enforcing改成disabled就行。存盘退出。这回一定可以了,如果还不可以就重启一下服务器吧。

原文地址:https://www.cnblogs.com/ylqmf/p/2172913.html