PHP: imagecreatefromstring - PullRequest
       20

PHP: imagecreatefromstring

0 голосов
/ 30 марта 2011

У меня есть класс загрузки файла, который возвращает объект изменения размера изображения, если загрузка файла считается изображением. Конструкция класса изменения размера изображения начинается с этого:

$this->resource = imagecreatefromstring($this->getData());

if (!is_resource($this->resource)) {
  return $this->error(IMAGE_ERR_SOURCE_CREATION_ERROR);
}

$this->getData() возвращает строку, возвращаемую из file_get_contents из tmp_name из $_FILES[..] массива.

Проблема заключается в следующем. Он отлично работает на моем сервере разработки 5.3.0, но imagecreatefromstring() не работает на рабочем сервере, 5.3.5.

Почему? Я не могу разобраться с этим, я сравнил строки изображений из разработки и продукта с использованием base64, и они идентичны. Что мне нужно посмотреть, что изменилось с .0 на .5?

Редактировать: Да, GD2 установлен и работает правильно. Кстати, WordPress (3.1) также установлен на этом сервере, и все функции изображений работают правильно, поэтому я так озадачен.

Редактировать 2

После отладки с display_errors (я знаю, это следовало сделать первым), возвращается ошибка:

Warning: imagecreatefromstring(): No JPEG support in this PHP build

Значит ли это, что мне нужно переустанавливать GD с поддержкой JPEG, или его можно включить после установки, IE сейчас?

1 Ответ

2 голосов
/ 30 марта 2011
  1. Убедитесь, что у вас есть GD на рабочем сервере (с использованием <?php phpinfo(); ?> или $> php -m), и он настроен правильно (с использованием $> php --re GD и $> php --ri GD).
  2. Включить отображение ошибок на рабочем сервере (временно)
  3. Если [2] не удалось, используйте error_reporting(E_ALL)
  4. Запустить тестовый сценарий скрипта через SSH на рабочем сервере и посмотреть, не сработает ли он (должен)
  5. Используя [4], пропустите его через strace (если на linux) или TraceNT (на windows) и посмотрите, откуда возникла ошибка.
...