2010-08-13 8 views
2

Любые функции PHP, которые имеют дело с JPEG, похоже, не работают на моем сервере.Функции 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 работают нормально и, как и ожидалось.

Любые идеи?

EDIT:

Нашел это в моем файле журнала ошибок Apache:

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

Если вы уверены, что 'test.jpg' является допустимым файлом JPG (примечание GD не может иметь дело с CMYK JPGs - убедитесь, что это RGB! Также попробуйте использовать другой файл), то это, похоже, проблема с конфигурацией сервера лучше спросить на serverfault.com. –

+0

Попробовали с несколькими разными файлами с таким же результатом – Oli

ответ

0

Оказывается, что файл test.jpg не существует, или не заголовки правильно FILETYPE (например, если кто-то переименует test.png как test.jpg, он все равно будет иметь заголовки .png). Попробуйте создать новый файл test.jpg с помощью программы редактирования изображений и посмотрите, работает ли она.

+0

Попробовали это и все еще не работают. Просто чтобы подтвердить, что он действительно существует, и я получил правильный путь, я попытался открыть тот, который был преднамеренно неправильным, и это дало мне другую ошибку (невозможно открыть файл или аналогичный) – Oli

6

Ваш журнал ошибок ясно показывает, что ваш PHP скомпилирован с/требует libjpeg версии 62, в то время как библиотека на вашем сервере версия 80.

Либо установить правильную версию libjpeg или перекомпилировать gd/php.

+0

apt-get сообщает мне, что «libjpeg62-dev - это уже самая новая версия» – Oli

+0

libjpeg62 - это библиотека, libjpeg62-dev - только заголовки. Кроме того, вы используете стандартные пакеты php/gd? – gnud

+0

Да, стандарт, установленный «apt get install» – Oli

Смежные вопросы