2010-08-13 48 views
2

處理JPEG的任何PHP函數似乎都不適用於我的服務器。PHP JPEG函數不能正常工作

此代碼:

<?php 
$im = imagecreatetruecolor(120, 20); 
$text_color = imagecolorallocate($im, 233, 14, 91); 
imagestring($im, 1, 5, 5, 'A Simple Text String', $text_color); 
header('Content-type: image/jpeg'); 
imagejpeg($im); 
imagedestroy($im); 
?> 

創建一個空文件。

如預期的那樣,使用GIF或PNG功能將創建一個包含文本「簡單文本字符串」的圖像。

此:

$im = imagecreatefromjpeg("test.jpg"); 

回報

Warning: imagecreatefromjpeg() [function.imagecreatefromjpeg]: 'test.jpg' is not a valid JPEG file in /path/to/test.php on line 2 

一個phpinfo()函數顯示:

gd 
GD Support enabled 
GD Version 2.0 or higher 
FreeType Support enabled 
FreeType Linkage with freetype 
FreeType Version 2.3.9 
T1Lib Support enabled 
GIF Read Support enabled 
GIF Create Support enabled 
JPG Support  enabled 
PNG Support  enabled 
WBMP Support enabled 

,並且網絡服務器可以讀取任何相關文件。

GIF和PNG功能正常工作,並如預期。

任何想法?

編輯:

發現這在我的Apache的錯誤日誌文件:

gd-jpeg: JPEG library reports unrecoverable error: Wrong JPEG library version: library is 80, caller expects 62 
+0

如果您確定'test.jpg'是一個有效的JPG文件(注意GD無法處理CMYK JPG--確保它是RGB!也嘗試使用不同的文件),那麼這似乎是一個服務器配置問題在serverfault.com上更好地問。 – 2010-08-16 09:52:16

+0

已嘗試過幾個不同的文件,結果相同 – Oli 2010-08-16 10:24:16

回答

0

看來,該文件test.jpg不存在,或不正確的文件類型報頭(例如,如果有人將test.png重命名爲test.jpg,它仍然會有.png標題)。嘗試使用圖像編輯程序創建一個新的test.jpg文件,並查看它是否有效。

+0

已經試過這個,但仍然無法正常工作。只是爲了確認它確實存在,並且我找到了正確的路徑,我試圖打開一個故意錯誤的,並且它給了我一個不同的錯誤(無法打開文件或類似的東西) – Oli 2010-08-13 15:22:23

6

錯誤日誌清楚地表明,你的PHP編譯針對/需要libjpeg版本62,而您的服務器上的庫版本80

無論安裝的libjpeg正確的版本,或重新編譯gd/php

+0

apt-get告訴我, 「libjpeg62-dev已經是最新版本」 – Oli 2010-08-16 10:18:50

+0

libjpeg62是庫,libjpeg62-dev只是頭文件。另外,你使用的是標準的php/gd包嗎? – gnud 2010-08-16 12:23:29

+0

是的,標準安裝「apt get install」 – Oli 2010-08-16 12:49:01