字节顺序标记(BOM)由PHP-FPM生成

时间:2020-09-14 03:26:07

标签: php byte-order-mark fpm

我有一个PHP脚本,用于响应http查询提供jpeg图像。

ob_start();
header('HTTP/1.1 200 OK');
header('Cache-Control: no-cache, must-revalidate');     // don't want any caching
header('Content-Type: image/jpeg');
header("Content-Length: $len");
readfile($fn);
ob_end_flush();

此脚本在Apache mod-php7(Ubuntu 16.04)上可以正常工作,但是与Apache和PHP-FPM(Ubuntu 20.04)相同的脚本会导致jpeg流带有BOM表前缀-浏览器将其视为无效的jpeg

我还尝试使用wget保存查询响应,并且可以将BOM表作为响应正文的前3个字节(在标头之后)。

如果我绕过脚本直接获取jpeg,一切正常。

我对BOM_在ob_end_flush()的缓冲区中不存在感到满意-(我向ob_start临时添加了一个过滤器以检查缓冲区)

因此php-fpm出于某种原因似乎正在添加BOM。 php-fpm错误日志中没有任何内容。

可能是什么原因造成的?

0 个答案:

没有答案