我有一个几乎可以肯定是新手的问题。我希望在写这个问题时找到问题,但我仍然卡住了。
我想更改 apache 的 DocumentRoot,但我不断收到错误消息“DocumentRoot 必须是一个目录”。
情况:
- 该代码在虚拟 VMWare 机器 4.0.4 build-744019 中运行
- linux 的版本是 Scientific Linux release 6.4 (Carbon)
- 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
我认为这可能是一个特权问题,所以(这是一个与互联网隔离的虚拟开发机器,我正在排除故障,所以我不太担心安全性),如您所见,我将特权设置为 777。
我什至更改了运行 apache 的用户(并确认该更改与 ps 一起使用)以确保特权不应该成为问题。
堆栈溢出
有一些堆栈溢出答案,但大多数都说“阅读错误消息。它说该目录实际上并不存在”。其他人暗示最后可能会有一个斜杠,这会很糟糕。
其他网站
我发现最有用的是这个建议
由于 SELinux 扩展,您可能会收到“DocumentRoot must be a directory”错误,即使它实际上是一个目录。运行 system-config-securitylevel(或 redhat-config-securitylevel)为 httpd 禁用 SELinux 或授予该目录的 SELinux 权限:chcon -R -h -t httpd_sys_content_t /path/to/directory*
我的 linux 版本不是 Security Enhanced Linux,所以在不理解的情况下我还是尝试了它:没有效果。
现在的情况
我已经没有尝试的想法了,所以任何诊断问题或建议将不胜感激