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

前端之家收集整理的这篇文章主要介绍了php – 当访问`/`时,Apache使用FallbackResource挂起五秒钟前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用 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
原文链接:https://www.f2er.com/php/139176.html

猜你在找的PHP相关文章