PHP readfile()返回格式错误的文件


PHP readfile() returns malfomed file

自从今天我有一个奇怪的问题与我的网站-我有一个API调用代理在web服务器上的图像。代码:

<?php
$file = $_GET["id"];
//returns the absolute path to the image
$path = thumb_location($file);
header('Content-Type:image/jpeg');
header('Content-Length: '.filesize($path));
readfile(realpath($path));
?>

这个工作非常好,直到今天早些时候,突然所有的图像被打破。当API调用下载图像并将其与源图像进行比较时,结果如下:

$ cmp -b --print-bytes original.jpg malformed.jpg 
original.jpg malformed.jpg differ: byte 1, line 1 is 377 ?  12 ^J

有什么建议吗?

@ decize指出我应该在十六进制编辑器中检查文件后,我发现在输出前添加了一个换行字符。这是由于我最近添加的PHP文件的结束?>标记后的换行造成的。删除换行符(或?>标签)修复了这个问题。

谢谢你的帮助!