imagecreatefromjpeg()error - 为什么我的图像处理脚本失败?

时间:2009-04-02 01:58:38

标签: php image-processing image-manipulation

我目前正在使用图像处理脚本对上传的图像进行一些处理,而我在开发环境中遇到了问题。这个代码在我的生产服务器上运行。

错误是:

PHP Warning:  imagecreatefromjpeg(): php_network_getaddresses: 
  getaddrinfo failed: Name or service not known in /path/to/script.php
  on line 75

75上的代码行是:

$this->img = imagecreatefromjpeg(PHPTHUMB."?src=/".$this->image_path);

创建一个由phpThumb制作的图像,该图像用于进一步操作。

关于如何解决这个问题的任何想法?任何人都可以了解错误的含义吗?

谢谢,

修改 同样,如果我在浏览器中访问PHPTHUMB . "?src=/" . $this->image_path,则图片可以正常加载

php.ini中的用户代理未解决问题indicated here

编辑(解决方案):我必须将INTERNAL 192.168.204.XXX IP添加到hosts文件中,以便http://dev.mysite.com正确解析。尝试127.0.0.1和外部IP没有产生任何结果,但内部工作完美。感谢大家的努力,

5 个答案:

答案 0 :(得分:5)

我完全不确定该错误的原因,但这是我最好的猜测。

有一个特定的PHP设置,可以将URL视为文件。通常,imagecreatefromjpeg接受一个文件名,我想。由于您传递的是URL,因此需要确保启用了特定设置。相信您可以在此处找到有关它的更多信息:http://us2.php.net/file

  

文件名

Path to the file.
Tip
     

如果fopen,URL可以用作此函数的文件名   包装器已启用。看到   fopen()了解更多有关如何使用的细节   指定文件名和列表   支持的协议/封装器   支持的URL协议列表。

Fopen包装:http://us2.php.net/manual/en/filesystem.configuration.php#ini.allow-url-fopen

您的开发环境可能无法使用此设置,但您的生产环境可能是。

修改

此页面列出了您的错误: http://bugs.php.net/bug.php?id=11058

并提到可能的修复方法是修改hosts文件以明确包含您正在访问的服务器的ip / dns。

  

我试图重新配置我的名字   配置,没有任何结果,到   解决这个问题。问题解决了   将以下行添加到我的   的/ etc /主机:

     

194.97.55.147 mx.freenet.de

也许你可以试试这个?

答案 1 :(得分:1)

你是否也检查过php.ini中的allow_url_fopen是否设置为On? 我看到他们确实在你帖子中提到的那篇文章中提到了这一点。


编辑:此外,您运行的操作系统和PHP版本是什么? 只需在php.net上阅读:

“在PHP 4.3.0之前的Windows版本中,以下函数不支持远程文件访问:include(),include_once(),require() ,require_once()和GD函数扩展中的imagecreatefromXXX函数。“


EDIT2:

我刚刚阅读了评论中写的内容,你的allow_url_fopen设置为On,抱歉。 但OS,PHP版本和phpinfo()将有助于发现问题。

答案 2 :(得分:0)

错误消息表明网络级别存在问题。因此,如果可能的话,绕过它。尝试使用缩略图生成器的路径,而不是网络地址。

如果这不是一个选项,请尝试一些可以提供更细粒度错误消息的内容。我建议CURL。至少,它应该产生更多信息性的错误信息。

答案 3 :(得分:0)

这是失败的一个简单事实是因为在您的网络服务器上,您的DNS解析被破坏了。

如果您具有对服务器的SSH访问权限,请尝试以下命令

dig hostname

其中hostname是PHPTHUMB的主机名

这可能会失败。

假设您使用的是Linux,我建议您编辑/etc/resolv.conf(以root用户身份)

并在以“nameserver”

开头的任何其他行之前添加以下行
nameserver 4.2.2.2

这应该有希望解决问题,尽管你可能需要重启apache(或者你正在使用的任何网络服务器)!

答案 4 :(得分:0)

这里的问题是php无法像this bug report on php.net中所述那样解析您提供的PHPTHUMB网址。这可能意味着它是操作系统/ Web服务器的错误,在这种情况下,您可以手动将所连接服务器的IP地址输入hosts file