PHP readfile()返回有错误的文件

时间:2015-08-12 08:43:34

标签: php readfile

从今天开始,我的网站出现了一个奇怪的问题 - 我有一个API调用代理网络服务器上的图像。代码:

<?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

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

在@deceze指出我应该在十六进制编辑器中检查文件之后,我发现换行符前面有一个换行符。 这是由我最近添加的PHP文件的关闭?>标记之后的换行引起的。删除换行符(或?>标记)可解决此问题。

感谢您的帮助!