2012-03-22 45 views
0

我想在我的服務器上使用此php腳本顯示圖像。特定的Apache配置設置通過PHP顯示圖像?

$file = fopen('/Volumes/PROMISE/products/jpeg/89239-282.jpg', 'rb'); 
header('Content-Type: image/jpeg'); 
fpassthru($file); 

,但我得到一個破碎的形象,這個劇本是我的索引文件的頂部,現在用於測試目的,所以我不認爲那裏有一個頭的問題,事實上它的唯一的事在我的索引文件。 ..

我使用

echo file_get_contents('/Volumes/PROMISE/products/jpeg/89239-282.jpg'); 

藏漢試過了,沒有任何的運氣,該文件存在於指定的路徑,它有777權限。

我最後的想法是它可能是在Apache服務器上的一些配置..?不知道是否有可以制動圖像的設置?

這是.htaccess文件設置

Options +FollowSymlinks -Multiviews 

這是從httpd.conf文件

Options All -MultiViews -ExecCGI -Indexes 

我檢查mime.types文件和圖像/ JPEG是活性的配置。

所以我想我的問題是:是否有一些可能性的Apache安裝程序搞亂我的圖像。

編輯:

我嘗試使用代碼PHP的人

// Create a blank image and add some text 
$im = imagecreatetruecolor(120, 20); 
$text_color = imagecolorallocate($im, 233, 14, 91); 
imagestring($im, 1, 5, 5, 'A Simple Text String', $text_color); 

// Set the content type header - in this case image/jpeg 
header('Content-Type: image/jpeg'); 

// Output the image 
imagejpeg($im); 

// Free up memory 
imagedestroy($im); 

在我的本地計算機上它的工作原理,但不是我們的服務器上。它給我一個空白頁面,沒有錯誤。

如果我使用imagejpeg與第二PARAM並將其保存到桌面上,這似乎是所有罰款和完全可觀看

+0

你看過破損的圖片,看它是否包含任何PHP錯誤信息? – 2012-03-22 16:00:50

+0

檢查error_log。 – Cfreak 2012-03-22 16:00:51

+0

您是否嘗試過使用Fiddler或類似的工具來實際查看客戶端收到的十六進制轉儲? – SirDarius 2012-03-22 16:01:49

回答

1

我已經看到這個問題很多次。如果您還沒有這樣做,請嘗試用文本編輯器打開破損的圖像,看看是否有問題。嘗試在生成的文件和原始文件(從服務器)之間的差異。

想到的可能錯誤:圖像中顯示的PHP通知或警告,空白字符。例如,打開之前的空行可能會破壞圖像。

+0

我試過我使用的計算機上的圖像,並顯示相同的圖像。它顯示沒有錯誤的日誌,和它完全相同的MD5散列,如果我把它散列在服務器上,並在我的電腦上它是有效的。在服務器上,它顯示一個破碎的圖像..我失去了 – Patrick 2012-03-28 06:54:18

+0

有反正你可以發佈鏈接到這兩個文件? – Tchoupi 2012-03-28 12:01:36

+0

空白字符混亂了輸出 – Patrick 2012-04-13 07:59:05