У меня проблема с моим сервером FreeBSD 7.1. Реализация PHP GD больше не работает с изображениями PNG. Всякий раз, когда система пытается работать с изображениями PNG, я получаю эти три сообщения об ошибках:
[Sat Jul 18 21:41:15 2009] [error] [client 90.34.34.34] PHP Warning: imagecreatefrompng() [function.imagecreatefrompng]: gd-png: fatal libpng error: [00][00][00][00]: unknown critical chunk in /usr/storage/www/private/mikkel.hoegh.org/modules/acquia/imageapi/imageapi_gd.module on line 44, referer: http://mikkel.hoegh.org/admin/build/imagecache/3 [Sat Jul 18 21:41:15 2009] [error] [client 90.34.34.34] PHP Warning: imagecreatefrompng() [function.imagecreatefrompng]: gd-png error: setjmp returns error condition in /usr/storage/www/private/mikkel.hoegh.org/modules/acquia/imageapi/imageapi_gd.module on line 44, referer: http://mikkel.hoegh.org/admin/build/imagecache/3 [Sat Jul 18 21:41:15 2009] [error] [client 90.34.34.34] PHP Warning: imagecreatefrompng() [function.imagecreatefrompng]: 'sites/mikkel.hoegh.org/files/imagecache_sample.png' is not a valid PNG file in /usr/storage/www/private/mikkel.hoegh.org/modules/acquia/imageapi/imageapi_gd.module on line 44, referer: http://mikkel.hoegh.org/admin/build/imagecache/3
Я пытаюсь решить эту проблему уже полдня, и лучшая подсказка, которую я нашел, это у другого парня такая же проблема - но решения там нет.
Рассматриваемый код довольно прост, он просто вызывает imagecreatefrompng($filename);
Версии пакетов всех пакетов, о которых я могу думать, могут быть связаны:
Какие-нибудь подсказки?
Это очень старая ошибка во freebsd.
В extensions.ini
строка extension=gd.so
должна быть первой строкой.
Если вы используете Portmaster, это будет работать:
portmaster -dbrR png-1.2.40
Эта команда решает мою проблему:
portupgrade -fr png-1.2.40
Перед обновлением всегда читать
/usr/ports/UPDATING
Иногда вам нужно выполнить рекурсивное обновление, т.е.
portupgrade -fr png-1.2.37
Это может быть проблема с изображением PNG. Попробуйте очень простой код с очень маленьким черно-белым изображением PNG. Если это также вызывает те же ошибки в файлах журнала, вы можете рассмотреть возможность установки PHP из исходного кода, чтобы модули, такие как php_gd, обновлялись до последней версии.
Вы также можете попробовать установить
error_reporting = E_ALL
display_errors = On
на случай, если на экране появится более точное сообщение об ошибке. Не забудьте сделать display_errors=Off
после того, как вы закончили отладку на рабочем сервере.
У меня была недавняя проблема, похожая на эту. После обновления одного из пакетов в моей системе 7.2 капча, управляемая gd, в моей установке phpBB2 перестала работать. Я перестроил все порты php, и он исправился сам.
Я знаю, что это немного модно, но иногда что-то ломается в течение нескольких месяцев дополнительных обновлений из-за того, что зависимости выходят из строя.
Нет ответа, но поскольку я не могу оставлять комментарии; У меня система 7.2 с точно такой же проблемой и точно такими же версиями. Даже попытался понизить версию libpng, но безуспешно. Выполнение бинарного обновления с версии 7.1. до 7.2 было чрезвычайно безболезненно и того стоило, но не думайте, что это решит проблему :-)
Я также установил pecl-imagick, чтобы посмотреть, смогу ли я использовать это вместо этого, но, к моему удивлению, я получил аналогичные ошибки. Я пробовал много другого программного обеспечения, которое зависит от libpng, но все они могут загружать изображения с ошибками в php5-gd и pecl-imagick. Это заставило меня исключить libpng, что, как я сначала подумал, было проблемой. Мое следующее предположение - что-то в php API изменилось, я попытаюсь понизить версию php и посмотреть, поможет ли это.