我的机器运行Debian 9,使用Apache 2.4.25和PHP 7.0 FPM通过proxy_fcgi_module来运行php文件。
这是我使用Apache的php-fpm的配置:
<IfModule !mod_php7.c>
<IfModule proxy_fcgi_module>
<IfModule setenvif_module>
SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1
</IfModule>
<FilesMatch ".+\.ph(p[3457]?|t|tml)$">
SetHandler "proxy:unix:/run/php/php7.0-fpm.sock|fcgi://localhost"
</FilesMatch>
<FilesMatch ".+\.phps$">
# Deny access to raw php sources by default
# To re-enable it's recommended to enable access to the files
# only in specific virtual host or directory
Require all denied
</FilesMatch>
# Deny access to files without filename (e.g. '.php')
<FilesMatch "^\.ph(p[3457]?|t|tml|ps)$">
Require all denied
</FilesMatch>
这几个月都运行良好,但现在我偶然发现了以下两个php脚本的问题:
第一个脚本:
<?php
sleep(30);
echo "test 1\n";
?>
第二个脚本:
<?php
echo "test 2\n";
?>
我通过Firefox打开第一个脚本的URL,然后直接在第二个标签页面中打开秒脚本的URL。
会发生什么: 第二个脚本在第一个脚本完成加载后等待并加载。
我期待发生的事情: 第二个标签应立即加载。
我也注意到了一些有趣的事情:如果我通过curl调用这两个脚本,那么会立即加载。
我测试了最新版本的Firefox(58.0.1),Chromium(64.0.3282.119)和curl(7.58.0)。
更新
这似乎与HTTP2有关。如果我通过about:config with:
在Firefox中禁用HTTP2network.http.spdy.enabled.http2 = false
它有效。