字节顺序标记BOM由PHP-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错误日志中没有任何内容。

可能是什么原因造成的?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...