PHP readfile()异常错误消息


php readfile() strange error message

showIMG.php用于显示其路径+文件名中的图像,并包含

<?php
$fname = $_GET['file'];
$size = getimagesize($fname);
$mime = $size['mime'];
header("Content-type: $mime");
readfile($fname);
?>

我是从另一个文件中调用的

$cell = "filename.png";
$size = getimagesize($cell);
echo "<img src='showIMG.php?file=$cell' /> $size[3]";

$size[3]显示正确的图像尺寸,这意味着文件被找到了。但图像没有出现,只有一个破碎的图像图标。如果我复制该图标的位置并在Firefox的另一个选项卡中打开,我会得到错误消息:

The image "http://servername/showIMG.php?file=filename.png" cannot be displayed because it contains errors.

非常奇怪,因为传递给readfile()的参数只有"filename.png",而不是完整的url。有人知道是怎么回事吗?

保存/下载url,然后在十六进制/文本编辑器中打开文件。查找任何不合适的内容,例如php警告。如果从showIMG.php脚本输出的任何东西不是实际的图像数据,它将破坏文件。仅仅因为服务器上的一切看起来都很好,并不意味着客户端接收到的就是这样。


,并在评论中给出调查:

这是一个unicode字节顺序标记。您可能在支持unicode的编辑器中编辑了PHP文件,它将BOM放在脚本的开头。由于该BOM位于块的外部,因此它被视为输出,并将插入到发送的任何文件的开头。检查你的编辑器,看看它是否有一个"save without BOM"选项。

尝试添加:

头(Content-Transfer-Encoding:二进制);

header('Content-Length: ')。文件大小(帧)美元);