2013-02-17 79 views
0

我收到以下錯誤。PHP的,因爲它包含錯誤

url_example:localhost/testimage.php?img=img_592_121_200.jpg

我看過的大部分信息,並試圖提出瞭解決方案。全部失敗

該文件不會輸出到屏幕/瀏覽器,但可以保存到文件。

這裏是代碼,我把所有的空白空白和空行刪除。和硬編碼的文件名的腳本

**我開始懷疑這是我的設置裏面,但我不知道,甚至如何/從哪裏開始尋找

編輯:簡化爲去輸出屏幕只有

testimage.php

<?php 
//session_start(); 
//ob_start(); 
ini_set("display_errors", "1"); 
error_reporting(E_ALL); 
Header('Content-type:image/jpeg'); 
//$cacheFile="mypicXXX.jpg"; 
//$cache_dir="cache/1/592/"; 
$img_dir="webspace/1/592/"; 
$img="img_592_121.jpg"; 
$id="$img_dir$img"; 
$src=imagecreatefromjpeg($id); 
$new_width=200; 
$new_height=77; 
$width=600; 
$height=1001; 
$w_src=600; 
$h_src=1001; 
$img=imagecreatetruecolor($new_width,$new_height); 
imagecopyresampled($img,$src,0,0,0,0,$new_width,$new_height,$w_src,$h_src); 
imagejpeg($img,NULL,45); 
//$cacheFile=$cache_dir.$cacheFile; 
//imagejpeg($img,$cacheFile,45); 
imagedestroy($src); 
imagedestroy($img); 
//ob_end_flush(); 
?> 
+0

那麼,你究竟做了什麼?第一個建議應該是去掉'header()'行並查看可能顯示的錯誤消息。 – 2013-02-17 09:53:51

+0

你關閉由'ob_start()'啓動的輸出緩衝區嗎?另一種情況是錯誤消息看起來很奇怪。嘗試添加'error_reporting(E_ALL); ini_set('display_errors',1)'在頁面頂部 – kjetilh 2013-02-17 09:59:36

+0

我嘗試刪除標題行,屏幕只顯示亂碼。 我試圖刪除ob_start,試過Error_reporting不生成/顯示任何錯誤 我讀過,是不喜歡''in imagejpeg($ img,'',45);所以我把它設置爲imagejpeg($ img,NULL,45);,但沒有幫助 – rudy 2013-02-17 10:14:54

回答

0

你檢查,沒有輸出頭前發送? 您可以嘗試幾件事:

  1. 將header()函數移動到頂部。
  2. 刪除緩存(ob_start)並查看是否可以在沒有第一個的情況下使其工作。當你使用ob_start時,我想你也想使用ob_end_flush();如果你使用ob_start,我想你也想使用ob_end_flush()。最後?
  3. 嘗試使用NULL作爲imagejpeg()的第二個參數來執行RAW輸出,而不是寫入文件。

UPDATE 你確定你檢查你的指向該文件存在/或路徑是有效的(可寫權限有關)? 這個工程在我的本地,運行默認安裝XAMP(PHP3.5.1)

ini_set("display_errors", "1"); 
error_reporting(E_ALL); 
Header('Content-type:image/jpeg'); 
//$cacheFile="mypicXXX.jpg"; 
//$cache_dir="cache/1/592/"; 
$img_dir="webspace/1/592/"; 
$img="test.jpg"; 
$src=imagecreatefromjpeg($img); 
$new_width=200; 
$new_height=77; 
$width=600; 
$height=1001; 
$w_src=600; 
$h_src=1001; 
$img=imagecreatetruecolor($new_width,$new_height); 
imagecopyresampled($img,$src,0,0,0,0,$new_width,$new_height,$w_src,$h_src); 
imagejpeg($img,NULL,45); 
//$cacheFile=$cache_dir.$cacheFile; 
//imagejpeg($img,$cacheFile,45); 
imagedestroy($src); 
imagedestroy($img); 
+0

移動標題頂部,刪除ob_start。並且不,在標題之前沒有任何內容被髮送。仍然沒有工作 – rudy 2013-02-17 10:12:57

+0

那麼這聽起來像PHP無法找到您的文件$ cacheFile =「mypic.jpg」;確保你使用正確的路徑。我還用另一件事來更新我的答案來檢查。 – 2013-02-17 10:22:34

+0

它寫入緩存文件好,並將其放在我的目錄中,我只是無法得到它輸出到屏幕 – rudy 2013-02-17 10:25:57

0

固定。修復(至少對我來說)是將文件保存爲「UTF-8 - NO NOM」。之前,我有它作爲「UTF-8」

這整個文件格式,讓我失去了,我需要閱讀它的這些天

感謝所有幫助!

+0

啊,這解釋的東西。 :)我也認爲你的意思是UTF-8沒有BOM(字節順序標記)。由於它出現在文件頂部的一個字符,當您在​​該文件中使用header()或該文件被另一個php文件包含時,應始終將文件保存爲不含BOM的UTF-8。這裏有更多信息:https://bugs.php.net/bug.php?id = 22108 – 2013-02-18 07:32:20

相關問題