Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:imagecreatefromstring_Php_Gd2 - Fatal编程技术网

PHP:imagecreatefromstring

PHP:imagecreatefromstring,php,gd2,Php,Gd2,我有一个文件上传类,如果文件上传被认为是图像,它会返回一个图像大小调整对象。image resize类的构造从以下内容开始: $this->resource = imagecreatefromstring($this->getData()); if (!is_resource($this->resource)) { return $this->error(IMAGE_ERR_SOURCE_CREATION_ERROR); } $this->getData()返回从

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

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

if (!is_resource($this->resource)) {
  return $this->error(IMAGE_ERR_SOURCE_CREATION_ERROR);
}
$this->getData()
返回从
tmp\u name
$\u FILES[…]
数组中获取内容的文件返回的字符串

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

为什么??我无法理解,我已经比较了使用base64开发和产品的图像字符串,它们是相同的。从
.0
更改为
.5
时,我需要看什么

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

编辑2

在调试显示错误后(我知道应该先执行此操作),返回的错误为:

Warning: imagecreatefromstring(): No JPEG support in this PHP build
这是否意味着我必须重新安装支持JPEG的GD,或者它可以在安装后启用,即现在

  • 确保生产服务器上确实有GD(使用
    $>php-m
    ),并且配置正确(使用
    $>php--re-GD
    $>php--ri-GD
  • 在生产服务器上启用显示错误(暂时)
  • 如果[2]失败,请使用
    错误报告(E\u ALL)
  • 在生产服务器上通过SSH运行脚本testcase,并查看它是否也失败(应该)
  • 使用[4],通过
    strace
    (如果在linux上)或TraceNT(在windows上)运行它,并查看错误从何处开始

  • PHP安装是否真正支持您尝试使用的图像格式?请检查phpinfo以获得支持的编解码器。您能为我们更准确地定义“失败”吗?数据的图像格式是什么?运行代码$handle=fopen('img.jpg','r');$contents=fread($handle,filesize('img.jpg');$image=imagecreatefromstring($contents);标题(“内容类型:图像/jpeg”);图像jpeg($image);fclose($handle);并测试此函数是否正常工作。我希望我可以。。它只返回false,没有任何错误。函数只返回false..ahhhh。我可能使用了错误报告(E_ALL);但不显示错误。我这方面的巨大失败。。。请参阅更新问题。如果您无法让它编写任何内容(同时检查日志),您必须尝试我的4/5方法。Strace功能非常强大,不过我担心您需要一个精通linux的人(不包括我)。任务完成。:)。关于你的最后一个问题,我不确定,这取决于构建。在我的情况下,我可以替换GD库,但我不确定你的库。我想你可以备份你的GD副本并加入一个新的副本。如果你愿意,你可以上传exe文件,PHP不会抱怨;)。您是否尝试过(从WP)调整它们的大小?WP是聪明的,它可能有一些故障转移-例如,如果通过PHP失败,则通过HTML/CSS调整大小。@Matt WordPress有许多相当聪明的代码,用于在其运行的PHP版本缺少对某些图像函数的支持时,返回到更愚蠢的行为(请参阅WordPress的
    WP includes/media.PHP
    code)它完全可以上传图像,就像文件一样,而不需要GD对JPEG的支持;WordPress可能正在尽其所能应对这一点(例如,它可能会在页面上显示全尺寸图像,显示大小设置为缩略图大小,而不是重新缩放以生成真实的缩略图)