如何使用PHP-FPM和Apache时立即发送HTTP / 2标头

问题描述 投票:3回答:1

当以FPM运行时,我似乎无法立即从PHP发送标头。它们仅在请求结束时与内容一起发送。

我有一个Apache + PHP-FPM设置。我已禁用PHP和Apache中的输出压缩。

我什至使用tcpdump -nn -i any -A -s 0 port 9000考察了TCP连接流,并且我发现PHP直到最后才将标头发送给Apache,所以问题出在PHP设置上。

请参见下面我正在使用的测试代码。


header('Status: 200 OK');
header('Content-type: text/html; charset=utf-8');

header('Link: </src/app/src/App/Ui/Layout/default.css?__mtime=1553684041>; rel=preload; as=style;', false);

flush();

header('Test: 1', false);
sleep(5);
header('Test2: 2', false);

echo 'test';

我希望Link:标头在请求结束之前发送,即在'test'字符串之前发送,但不是。在5秒延迟之后,所有标头均在请求的末尾发送。

我在做什么错?

php apache http-headers http2
1个回答
0
投票

默认情况下,fastcgi_buffering设置为on

您需要在相关的fastcgi_buffering off;块中添加:location

© www.soinside.com 2019 - 2024. All rights reserved.