簡體   English   中英

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的保存”選項。

嘗試添加:

header('Content-Transfer-Encoding:binary');

header('Content-Length:'。filesize($ fname));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM