0

如果文件上传被认为是图像,我有一个文件上传类返回图像调整大小对象。图像调整大小类的构造从以下开始:

$this->resource = imagecreatefromstring($this->getData());

if (!is_resource($this->resource)) {
  return $this->error(IMAGE_ERR_SOURCE_CREATION_ERROR);
}

$this->getData()tmp_name$_FILES[..]数组中返回从 file_get_contents 返回的字符串。

问题如下。它在我的开发服务器上运行良好,5.3.0imagecreatefromstring()在生产服务器上失败,5.3.5.

为什么?我无法理解它,我使用 base64 比较了来自开发和产品的图像字符串,它们是相同的。我需要查看从 更改为的内容.0.5什么?

编辑:是的,GD2 已安装并正常工作。顺便说一句,这台服务器上也安装了 WordPress(3.1),所有图像功能都正常工作,这也是我如此困惑的原因。

编辑 2

用 display_errors 调试后(我知道应该先这样做),返回的错误是:

Warning: imagecreatefromstring(): No JPEG support in this PHP build

这是否意味着我必须重新安装支持 JPEG 的 GD,还是可以在安装后启用它,IE 现在?

4

1 回答 1

2
  1. 确保生产服务器上确实有 GD(使用<?php phpinfo(); ?>or $> php -m)并且配置正确(使用$> php --re GDand $> php --ri GD)。
  2. 在生产服务器上启用显示错误(暂时)
  3. 如果 [2] 失败,请使用error_reporting(E_ALL)
  4. 在生产服务器上通过 SSH 运行脚本测试用例,看看它是否也失败(应该)
  5. 使用 [4],通过strace(如果在 linux 上)或 TraceNT(在 windows 上)运行它并查看错误从哪里开始。
于 2011-03-30T10:01:41.100 回答