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

相关文章
相关标签/搜索