我的应用程序中包含以下代码:
header('Content-Type: text/html; charset=utf-8');
header('Content-Length: ' . filesize($filename));
header('Content-Disposition: inline; filename=' . $filename);
header('Content-Transfer-Encoding: binary');
ob_clean();
@readfile($filename);
应该读取一个html文件并写入响应输出中。
现在发生的一件奇怪的事是,它在一台服务器上运行得很好,而在另一台服务器上,它返回类似于编码错误的内容,例如
���&�lyY�]�����8���O��:���x��בw�6_an ����������+�G��͟>m��O�H&�WK�u>��_��(�U��z�_}�e�����ON�o��Y<�#�}��/�˵��}���Q��/ҼI?�Z1+�E��wZ�N묶��S�v�n_�o�B�9��e0��,�}=K[P�����������ڋ�����w���
。
这绝对不是由于相应文件的编码问题,因为当我替换
时也会发生 @readfile($filename);
与
echo "ABCDE";
两者都是Linux服务器,Apache和PHP版本非常相似:
PHP 5.6.35 / Apache/2.4.33
获取正确的版本,
PHP 5.6.36 / Apache/2.4.18
输入错误的密码。
答案 0 :(得分:0)
我找到了解决方案,但是我不清楚为什么。代替ob_clean()
的必须是ob_end_clean()
;