加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 当访问`/`时,Apache使用FallbackResource挂起五秒钟

发布时间:2020-12-13 13:55:01 所属栏目:PHP教程 来源:网络整理
导读:我正在使用 PHP 5.4.21运行Apache 2.4.6(Amazon)的标准安装,使用以下配置为我的虚拟主机: DirectoryIndex index.php# ...FallbackResource /index.php 我的index.php是简单的缩影: ?php echo "Hello world"; 访问http:// server-name /神秘地显示整页只有
我正在使用 PHP 5.4.21运行Apache 2.4.6(Amazon)的标准安装,使用以下配置为我的虚拟主机:
DirectoryIndex index.php
# ...
FallbackResource /index.php

我的index.php是简单的缩影:

<?php echo "Hello world";

访问http://< server-name> /神秘地显示整页只有五秒钟!任何其他页面都有预期的响应时间(这很快).

我发现,这五秒钟与Keep-Alive功能的默认等待时间有关;在这种情况下,在Apache等待时间之后断开连接之前,不会发送分块响应的最后几个字节.顺便说一句,这也完全破坏了持久连接给你带来的任何好处.

这是Apache的已知错误还是我错过了一些非常明显的东西?

2017/04/18:这已在Apache 2.4.25: https://bz.apache.org/bugzilla/show_bug.cgi?id=58292中修复

从this bug report开始,我意识到这个问题可能与DirectoryIndex指令有关.

标准Apache安装在配置中附带以下部分:

<IfModule dir_module>
DirectoryIndex index.html
</IfModule>

此语句后面的任何指令(例如虚拟主机中的指令)都不会覆盖此设置;相反,它会被添加到请求索引时将尝试的页面堆栈中.当您执行strace httpd -X并在读取请求后立即检查stat()调用时,可以确认此行为,例如:

stat("/path/to/vhost/index.html",0x7fff9dc41b90) = -1 ENOENT
stat("/path/to/vhost/index.php",{st_mode=S_IFREG|0664,st_size=130,...}) = 0

虽然我无法准确说明原因,但在指定DirectoryIndex index.php之前必须清除任何以前的DirectoryIndex指令,即index.php必须是尝试处理请求的第一个页面.

这可以使用以下配置完成:

DirectoryIndex disabled
DirectoryIndex index.php

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读