
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=Off
depois de terminar a depuração em um servidor de produção.