【问题标题】:PHP: imagecreatefromstringPHP: imagecreatefromstring
【发布时间】: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..

标签: php gd2


【解决方案1】:
  1. 确保生产服务器上确实有 GD(使用 <?php phpinfo(); ?>$> php -m)并且配置正确(使用 $> php --re GD$> php --ri GD)。
  2. 在生产服务器上启用显示错误(暂时)
  3. 如果 [2] 失败,请使用error_reporting(E_ALL)
  4. 在生产服务器上通过 SSH 运行脚本测试用例,看看它是否也失败(应该)
  5. 使用 [4],通过 strace(如果在 linux 上)或 TraceNT(在 Windows 上)运行它,看看错误是从哪里开始的。

【讨论】:

  • 啊啊啊啊。我可能使用过 error_reporting(E_ALL);但不是 display_errors。就我而言,严重失败...请参阅问题以获取更新。
  • 如果你不能让它写任何东西(也检查日志),你将不得不尝试我的 4/5 方法。 Strace 非常强大,不过恐怕你需要一个对 linux 非常了解的人(我不包括在内)。
  • 嗯,这个错误是不言自明的。任务完成。 :)。关于你的最后一个问题,我不确定,这取决于构建。就我而言,我可以替换 GD 库,但我不确定你的库。我想你可以备份你的 GD 副本并放入一个新的。
  • 好吧,如果你愿意,你可以上传 exe 文件,PHP 不会抱怨 ;)。您是否尝试过调整它们的大小(来自 WP)? WP 很聪明,它可能会有一些故障转移 - 例如如果通过 PHP 失败,则通过 HTML/CSS 调整大小。
  • @Matt WordPress 有很多相当聪明的代码,如果它运行的 PHP 版本缺乏对某些图像功能的支持(请参阅 WordPress 的 wp-includes/media.php 代码),它可以退回到更愚蠢的行为。上传图像,就像文件一样,没有 GD 对 JPEG 的支持;在那之后,WordPress 可能只是尽可能地应对(例如,它可能会在页面上显示全尺寸图像,并将显示尺寸设置为缩略图大小,而不是重新缩放以生成真正的缩略图。)跨度>
猜你喜欢
  • 1970-01-01
  • 2012-08-24
  • 2011-10-17
  • 2013-10-05
  • 2010-09-11
  • 1970-01-01
  • 2014-07-03
  • 2014-08-04
  • 1970-01-01
相关资源
最近更新 更多