我几乎肯定是一个新手问题。我期望在写这个问题的时候找到问题,但我仍然陷入困境。Apache重新启动原因DocumentRoot必须是一个目录,即使它是一个目录,并且似乎没有特权问题
我想更改apache的DocumentRoot,但我不断收到错误消息“DocumentRoot必须是目录”。
现状:
- 的代码是在一个虚拟的VMware虚拟机运行4.0.4集结744019
- Linux版本是Linux的科学版本6.4(碳)
- 的版本apache是Apache/2.2.15(Unix)(这是一个没有任何东西的yum安装
在httpd.conf
DocumentRoot "/home/stave/www"
当我重新启动,我得到的消息,迄今所采取
Starting httpd: Syntax error on line 292 of /etc/httpd/conf/httpd.conf:
DocumentRoot must be a directory
步骤:
我保证目录存在:
ls -asl /home/stave
4 drwxrwxrwx. 2 stave stave 4096 Feb 9 09:08 www
It even has a file in it "index.html", so I am very sure that the directory exists
我认为它可能b这是一个特权问题(这是一个虚拟开发机器与互联网隔离,并且我正在排除故障,因此我不太担心安全性),因为您可以看到我将权限设置为777.
我甚至更改了用户Apache正在运行(并确认更改与ps一起工作)以保证特权不会成为问题。
#1
有几个堆栈溢出的答案,但大多说“读错误讯息,这是说,目录实际上不存在”。其他人则暗示最终可能会出现尾随的斜线,这很糟糕。
其他网站
最有用的我发现了this被通知
你可能得了“的DocumentRoot必须是目录”的错误,即使真的是因为SELinux的扩展名的目录。运行系统配置-securitylevel中(或配置工具securitylevel中)来禁用SELinux为httpd或给SELinux的权限是 目录: chcon这个-R -h -t httpd_sys_content_t /路径/到/目录下的*
我的版本的Linux是不是安全增强的Linux,所以不理解我反正试了一下:没有效果。
现状
我已经江郎才尽了尝试,所以任何诊断的问题或建议,将不胜感激
行292肯定是你正在看的? Grep你的整个配置DocumentRoot,也许有一个你错过了? – 2013-02-09 09:56:39
谢谢保罗。 Grep会在前缀中返回一些注释,并在第292行中提供有问题的行。(目前,违规行指向/ var/www/html)。 – 2013-02-09 10:07:39
你试过在strace下启动Apache吗?可能会给出线索。 – voetsjoeba 2013-02-10 13:09:46