Странная ошибка GD при работе с изображениями PNG из PHP на FreeBSD

Странная ошибка GD при работе с изображениями PNG из PHP на FreeBSD

У меня проблема с моим сервером FreeBSD 7.1. Реализация PHP GD больше не работает с изображениями PNG. Всякий раз, когда система пытается работать с изображениями PNG, я получаю эти три сообщения об ошибках:

[Сб Июл 18 21:41:15 2009] [ошибка] [клиент 90.34.34.34] PHP Предупреждение: imagecreatefrompng() [function.imagecreatefrompng]: gd-png: фатальная ошибка libpng: [00][00][00][00]: неизвестный критический фрагмент в /usr/storage/www/private/mikkel.hoegh.org/modules/acquia/imageapi/imageapi_gd.module на строке 44, ссылка: http://mikkel.hoegh.org/admin/build/imagecache/3
[Сб Июл 18 21:41:15 2009] [ошибка] [клиент 90.34.34.34] PHP Предупреждение: imagecreatefrompng() [function.imagecreatefrompng]: ошибка gd-png: setjmp возвращает состояние ошибки в /usr/storage/www/private/mikkel.hoegh.org/modules/acquia/imageapi/imageapi_gd.module на строке 44, ссылка: http://mikkel.hoegh.org/admin/build/imagecache/3
[Сб Июл 18 21:41:15 2009] [ошибка] [клиент 90.34.34.34] PHP Предупреждение: imagecreatefrompng() [function.imagecreatefrompng]: 'sites/mikkel.hoegh.org/files/imagecache_sample.png' не является допустимым файлом PNG в /usr/storage/www/private/mikkel.hoegh.org/modules/acquia/imageapi/imageapi_gd.module на строке 44, ссылка: http://mikkel.hoegh.org/admin/build/imagecache/3

Я пытаюсь решить эту загадку уже полдня, и лучшая подсказка, которую я нашел, этоу другого парня та же проблема– однако решения там нет.

Код, о котором идет речь, довольно прост, он просто вызываетimagecreatefrompng($filename);

Версии всех пакетов, которые, как мне кажется, могут быть связаны:

  • php5-5.2.10
  • php5-gd-5.2.10
  • png-1.2.37
  • гд-2.0.35_1,1

Есть какие-нибудь подсказки?

решение1

Перед обновлениемвсегдачитать

/usr/ports/UPDATING

Иногда вам нужно будет выполнить рекурсивное обновление порта, например

portupgrade -fr png-1.2.37

решение2

Эта команда решила мою проблему:

portupgrade -fr png-1.2.40

решение3

Если вы используете portmaster, это сработает:

portmaster -dbrR png-1.2.40

решение4

Это может быть проблема с изображением PNG. Попробуйте очень простой код с очень маленьким черно-белым изображением PNG. Если это также генерирует те же ошибки в файлах журнала, то вы можете рассмотреть установку PHP из исходного кода, чтобы модули, такие как php_gd, обновились до последней версии.

Вы также можете попробовать установить

error_reporting  =  E_ALL
display_errors = On

на случай, если они дадут лучшее сообщение об ошибке на экране. Не забудьте сделать это display_errors=Offпосле того, как вы закончите отладку на производственном сервере.

Связанный контент