Erro estranho de GD ao trabalhar em imagens PNG de PHP no FreeBSD

Erro estranho de GD ao trabalhar em imagens PNG de PHP no FreeBSD

Tenho um problema com meu servidor FreeBSD 7.1. A implementação GD do PHP não funciona mais em imagens PNG. Sempre que o sistema tenta trabalhar com imagens PNG, recebo estas três mensagens de erro:

[Sábado, 18 de julho 21:41:15 2009] [erro] [cliente 90.34.34.34] Aviso do PHP: imagecreatefrompng() [function.imagecreatefrompng]: gd-png: erro fatal de libpng: [00][00][00][ 00]: pedaço crítico desconhecido em /usr/storage/www/private/mikkel.hoegh.org/modules/acquia/imageapi/imageapi_gd.module na linha 44, referenciador: http://mikkel.hoegh.org/admin/build /imagecache/3
[Sábado, 18 de julho 21:41:15 2009] [erro] [cliente 90.34.34.34] Aviso do PHP: imagecreatefrompng() [function.imagecreatefrompng]: erro gd-png: setjmp retorna condição de erro em /usr/storage/www/private /mikkel.hoegh.org/modules/acquia/imageapi/imageapi_gd.module na linha 44, referência: http://mikkel.hoegh.org/admin/build/imagecache/3
[Sábado, 18 de julho 21:41:15 2009] [erro] [cliente 90.34.34.34] Aviso do PHP: imagecreatefrompng() [function.imagecreatefrompng]: 'sites/mikkel.hoegh.org/files/imagecache_sample.png' não é um arquivo PNG válido em /usr/storage/www/private/mikkel.hoegh.org/modules/acquia/imageapi/imageapi_gd.module na linha 44, referência: http://mikkel.hoegh.org/admin/build/imagecache/ 3

Estou tentando resolver isso há meio dia, e a melhor pista que encontrei éoutro cara com o mesmo problema– nenhuma solução aí, no entanto.

O código em questão é bastante simples, apenas chamaimagecreatefrompng($filename);

Versões de pacotes de todos os pacotes que consigo imaginar que podem estar relacionados:

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

Alguma pista?

Responder1

Antes de atualizarsempreler

/usr/ports/UPDATING

Às vezes você precisará fazer portupgrade recursivo, ou seja

portupgrade -fr png-1.2.37

Responder2

Este comando resolve meu problema:

portupgrade -fr png-1.2.40

Responder3

Se você estiver usando o portmaster, isso funcionará:

portmaster -dbrR png-1.2.40

Responder4

Pode haver problema com a imagem PNG. Experimente um código muito básico com uma imagem PNG em preto e branco muito pequena. Se isso também gerar os mesmos erros nos arquivos de log, considere instalar o PHP a partir do código-fonte para que módulos como php_gd sejam atualizados para a versão mais recente.

Você também pode tentar configurar

error_reporting  =  E_ALL
display_errors = On

caso eles apresentem alguma mensagem de erro melhor na tela. Lembre-se de fazer display_errors=Offdepois de terminar a depuração em um servidor de produção.

informação relacionada