2010-08-13 122 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