我有一个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错误日志中没有任何内容。
可能是什么原因造成的?