我几乎可以肯定是一个新手问题.我希望在写这个问题时能找到问题,但我仍然陷入困境.
我想更改Apache的DocumentRoot,但我不断收到错误消息"DocumentRoot必须是一个目录".
情况:
在httpd.conf中
DocumentRoot "/home/stave/www"
Run Code Online (Sandbox Code Playgroud)
当我重新启动时,我收到消息
Starting httpd: Syntax error on line 292 of /etc/httpd/conf/httpd.conf:
DocumentRoot must be a directory
Run Code Online (Sandbox Code Playgroud)
迄今采取的步骤:
我确保目录存在:
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
Run Code Online (Sandbox Code Playgroud)
我认为它可能是一个特权问题(这是一个与互联网隔离的虚拟开发机器,我正在排除故障,因此我不太担心安全性),因为你可以看到我将特权设置为777.
我甚至更改了apache正在运行的用户(并确认该更改与ps一起工作)以保证特权不应成为问题.
堆栈溢出
有一些堆栈溢出答案,但大多数人说"读取错误消息.它说该目录实际上并不存在".其他人暗示最后可能会有一个尾随的斜线,这将是糟糕的.
其他网站
我发现的最有用的是这个被通知
你可能得到"DocumentRoot必须是一个目录"错误,即使它实际上是一个目录,因为SELinux扩展.运行system-config-securitylevel(或redhat-config-securitylevel)以禁用httpd的SELinux或为该目录授予SELinux权限:chcon -R -h -t httpd_sys_content_t/path/to/directory*
我的linux版本不是安全增强型Linux,所以不理解我还是尝试了它:没有效果.
现在的情况
我已经没有想法尝试,所以任何诊断问题或建议将不胜感激
小智 21
您在"其他网站"下发布的链接突出了您的问题的根本原因,即Selinux.
除非服务器是超级安全环境的一部分,否则我只会禁用Selinux.
在RedHat/CentOS/Scientific Linux上,可以通过编辑/ etc/sysconfig/selinux轻松完成 - 找到参数"selinux"并根据以下摘录将"enforcing"选项更改为"disabled":
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
Run Code Online (Sandbox Code Playgroud)
进行此更改后重启服务器可能是明智之举.
Ced*_*ric 11
你不应该只是禁用SELinux.
您需要将httpd_enable_homedirs设置为on.
yum -y install policycoreutils-python
setsebool -P httpd_enable_homedirs on
Run Code Online (Sandbox Code Playgroud)
小智 7
我今天遇到了这个问题,因为我将我的DocumentRoot从/ var/www/html移动到/ srv/www/html.作为我们的安全策略的一部分,我们没有选择只禁用SELinux.
我的修复,正如我发现的那样,将/ srv的SELinux文件上下文更改为匹配/ var.妥协是的,但仍然比完全禁用它更好.除此之外...我确定/ srv/www和所有子文件夹都有httpd_sys_content_t来匹配/ var/www下的文件夹,现在一切都很好.
小智 5
这与David的答案基本相同,但只是更清楚一点,http服务目录设置了错误的SELinux安全上下文.
解决这个问题的完整解释在这里,http://mybroadband.co.za/vb/showthread.php/588183-Fix-403-Forbidden-on-newly-configured-CentOS-6-5-httpd-server-(或-13-10-Ubuntu的LAMP)
我的问题是我将我的网站放在与/ var/www /的文档路径不同的目录中,所以我必须按照上面链接中的第3个选项进行更正.我设置my/websites /目录的相同文件上下文以匹配/ var/www /的文件上下文.奇怪的是早期版本的CentOS 5.5必须没有安装/启用SELinux,因为我的其他服务器对此没有任何问题,并且在命令提示符下运行ls -Z时将这些文件夹显示为"未标记".
我在AWS上运行CentOS 6.5,从官方市场最小安装.因此,当我在我的文件夹上运行ls -Z命令时,我确切地看到了上面的链接显示的可能问题.
运行chcon命令解决了我的问题!
只需将html /替换为您要使用的目录!
chcon -Rv --type = httpd_sys_content_t html /
chcon -Rv --user = system_u html /
另外,我还必须禁用iptables才能使路由正常工作,默认设置是提供空白页面.
服务iptables停止
希望能帮助任何有同样问题的人.
| 归档时间: |
|
| 查看次数: |
43643 次 |
| 最近记录: |