在 FreeBSD 上使用 PHP 处理 PNG 图像时出现奇怪的 GD 错误

在 FreeBSD 上使用 PHP 处理 PNG 图像时出现奇怪的 GD 错误

我的 FreeBSD 7.1 服务器有问题。PHP 的 GD 实现不再适用于 PNG 图像。每当系统尝试处理 PNG 图像时,我都会收到以下三条错误消息:

[2009 年 7 月 18 日星期六 21:41:15] [错误] [客户端 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
[2009 年 7 月 18 日星期六 21:41:15] [错误] [客户端 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
[2009 年 7 月 18 日星期六 21:41:15] [错误] [客户端 90.34.34.34] PHP 警告:imagecreatefrompng() [function.imagecreatefrompng]: 'sites/mikkel.hoegh.org/files/imagecache_sample.png' 不是 /usr/storage/www/private/mikkel.hoegh.org/modules/acquia/imageapi/imageapi_gd.module 第 44 行中有效的 PNG 文件,引用者:http://mikkel.hoegh.org/admin/build/imagecache/3

我已经尝试解决这个问题半天了,我找到的最好的线索是另一个人也遇到了同样的问题– 但是,没有解决方案。

有问题的代码相当简单,它只是调用imagecreatefrompng($filename);

我能想到的所有可能相关的软件包的软件包版本:

  • php5-5.2.10
  • php5-gd-5.2.10
  • png-1.2.37
  • GD-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在生产服务器上完成调试后再进行此操作。

相关内容