【发布时间】:2011-03-30 09:56:52
【问题描述】:
如果文件上传被认为是图像,我有一个文件上传类,它返回一个图像调整大小对象。图像调整大小类的构造开始于:
$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.0 上运行良好,但imagecreatefromstring() 在生产服务器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 现在?
【问题讨论】:
-
PHP 安装是否真的支持您尝试使用的图像格式?检查 phpinfo 以获取支持的编解码器。
-
您能为我们更准确地定义“失败”吗?数据是什么图片格式?
-
运行此代码 $handle = fopen('img.jpg', 'r'); $contents = fread($handle, filesize('img.jpg')); $image = imagecreatefromstring($contents); header("内容类型:图片/jpeg");图像JPEG($图像); fclose($handle);
-
并测试此功能是否有效。
-
我希望我能......它只是返回 false,根本没有错误。该函数只返回 false..