httpd 未按预期读取 conf/httpd.conf 中的文档根目录

Posted

技术标签:

【中文标题】httpd 未按预期读取 conf/httpd.conf 中的文档根目录【英文标题】:httpd not reading the document root in conf/httpd.conf as expected 【发布时间】:2018-10-21 04:32:25 【问题描述】:

我的 CentOS7 服务器上有一个 Laravel 项目,它位于文件夹“/var/www/html/myProject”中。

我已经在“DocumentRoot”和目录配置中将 /etc/httpd/conf/httpd.conf 中的文档根目录更改为“/var/www/html/myProject/public”,因此当我输入 IP 时浏览器会自动显示项目。

当我尝试这样做并通过浏览器访问我的 IP 时,我收到了以下消息:

禁止 您无权访问此服务器上的 /form。 服务器无法读取 htaccess 文件,拒绝访问是安全的

经过进一步检查,我发现在我的 /var/log/httpd/error_log 中,每次访问尝试后都会出现以下错误:

[Thu May 10 19:39:33.683522 2018] [core:crit] [pid 1994] (13)Permission denied: [client 79.182.62.1:51091] AH00529: /var/www/html/myProject/.htaccess pcfg_openfile: 无法检查 htaccess 文件,确保它是可读的并且 '/var/www/html/myProject/' 是可执行的

这对我来说很奇怪,因为路径应该是 /var/www/html/myProject/public,但缺少“public”。

我已经多次重启我的 apache,并将 DocumentRoot 路径更改为虚构路径,只是为了检查它是否更新。

它可能是 .htaccess 文件中的内容吗?虽然我没有更改文件,但我在 Laravel 创建它时留下了它。

【问题讨论】:

Stack Overflow 是一个编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参阅帮助中心的What topics can I ask about here。也许Web Applications Stack Exchange、Webmaster Stack Exchange 或Unix & Linux Stack Exchange 会是一个更好的提问地点。 【参考方案1】:

检查/var/www/html/myProject 文件和目录的权限。根据您粘贴的错误,似乎 apache 正在尝试按照 .htaccess 文件的指示从您的 myProject 目录中读取数据。这是正常操作。

找出您的 apache 正在运行的用户/组。然后请记住,您的文件必须是该用户可读的,并且该用户必须可以访问所有父目录(提示:执行位)。

最后检查 bootstrap/cache 和 storage laravel 目录(&子目录)是否可以被 apache 用户写入。

【讨论】:

一切都归apache所有,但这仍然不是问题。出于某种原因,即使在 conf/httpd.conf 中显然有 /var/www/html/myProject/public 的 DocumentRoot 我仍然收到与 /var/www/html/myProject/.htaccess 而不是 /var/ 相关的错误www/html/myProject/public/.htaccess

以上是关于httpd 未按预期读取 conf/httpd.conf 中的文档根目录的主要内容,如果未能解决你的问题,请参考以下文章

Apache 虚拟主机未按预期工作

命名管道未按预期工作。一遍又一遍地阅读相同的消息

Apache问题处理

VB 选择案例未按预期工作

使用 Linq to XML 遍历 XML 文件未按预期工作

Test-Path / System.IO.Directory::Exists 未按预期工作