php readfile()奇怪的错误消息

php readfile()奇怪的错误消息,php,image,Php,Image,showIMG.php用于从其路径+文件名显示图像,并包含 <?php $fname = $_GET['file']; $size = getimagesize($fname); $mime = $size['mime']; header("Content-type: $mime"); readfile($fname); ?> 非常奇怪的是,因为传递给readfile()的参数只有“filename.png”,而不是完整的url。有人知道发生了什么吗?尝试添加: 标题(“内容传输编

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

<?php
$fname = $_GET['file'];
$size = getimagesize($fname);
$mime = $size['mime'];
header("Content-type: $mime");
readfile($fname);
?>
非常奇怪的是,因为传递给readfile()的参数只有“filename.png”,而不是完整的url。有人知道发生了什么吗?

尝试添加:

标题(“内容传输编码:二进制”)


标题('Content-Length:'.filesize($fname))

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


鉴于评论中的调查:


这是一个unicode。您可能在支持unicode的编辑器中编辑了PHP文件,并将BOM表放在脚本的开头。由于该BOM表位于块之外,因此它将计为输出,并将插入到发送的任何文件的开头。检查编辑器是否有“不带BOM保存”选项。

保存/下载url,然后在十六进制/文本编辑器中打开文件。查找任何不合适的内容,例如php警告。如果showIMG.php脚本输出的任何内容不是实际的图像数据,则会损坏文件。服务器上的一切看起来都很好并不意味着客户端接收到的就是这个。它保存为一个png文件,有85.262个字节,比原始文件大3个字节。在文本编辑器(gedit)中打开时,两者的开头和结尾都有相同的字节,因此我无法找到这种差异。将光标放在文件的末尾,gedit说Ln 953和Col 193都是一样的。可能有用:好的,我可以使用xxd来查看PHP返回的文件在开头还有三个字节:EF BB BF。知道吗?这是一个unicode。您可能在支持unicode的编辑器中编辑了PHP文件,并将BOM表放在脚本的开头。由于该BOM表不在
块的范围内,因此它将计为输出,并将插入到您发送的任何文件的开头。检查编辑器是否有“不带BOM保存”选项。谢谢,但结果是一样的。
$cell = "filename.png";
$size = getimagesize($cell);
echo "<img src='showIMG.php?file=$cell' /> $size[3]";
The image "http://servername/showIMG.php?file=filename.png" cannot be displayed because it contains errors.