2010-01-23 45 views
0

下面的代碼不從IIS 6/PHP 5.2.9顯示圖像。它從XAMPP工作正常(PHP 5.3)PHP,IIS圖像不顯示在瀏覽器

$img = @imagecreate(200, 200); 
$background_color = imagecolorallocate($img, 0, 0, 0); 
$text_color = imagecolorallocate($img, 233, 14, 91); 
imagestring($img, 12, 60, 90, 'image here', $text_color); 
header('Last-Modified: ' . date('D, d M Y H:i:s')); 
header('Content-type: image/jpg'); 
header('Content-Disposition: inline; filename=blank_jpeg.jpg'); 
ob_start(); 
    imagejpeg($img); 
    imagedestroy($img); 
    $jpeg = ob_get_contents(); 
ob_end_clean(); 
header ('Content-length: ' . strlen($jpeg)); 
echo $jpeg; 
exit; 

回答

0

更有可能不是GD正確安裝IIS。

打開error loggingspecify an error log和調用腳本的時候檢查錯誤。

+0

在IE7,它實際上輸出包含 jibberish「CREATOR:GD-JPEG V1.0(使用IJG JPEG V62),」所以我覺得GD正在 – KalenGi 2010-01-23 07:00:30

+0

打開錯誤日誌揭示了大量的非GD錯誤這一定會造成奇怪的行爲。 – KalenGi 2010-01-25 01:11:40

0

我最終跟蹤誤差其根源。此代碼位於運行於Wordpress上的插件中。現在,在WordPress的社區,有一個用於啓用IIS的系統非常的URL沒有mod_rewrite的處理一些適當的方式的技術。該技術涉及捕獲由漂亮的url導致的404錯誤,並通過index.php重新路由頁面。

事實證明,沿途某處一些3個字符()被插入在輸出流中的任何其它頁面輸出之前。這對HTML頁面來說不是問題,因爲字符是不可見的,瀏覽器只是忽略它們。但是,在圖像的情況下,二進制數據的格式非常重要。因此,在得到由瀏覽器,因爲它是一個圖片拒絕字節序列無法辨認前方的圖像數據的結果將那些三個大字。

在我的具體情況的解決方案是使mod_rewrite的處理和問題就消失了。我希望這個信息可以節省一些人的調試時間。

相關問題