1

我目前正在使用图像处理脚本对上传的图像进行一些工作,并且在我的开发环境中遇到了问题。相同的代码适用于我的生产服务器。

错误是:

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没有解决此处所示的问题

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

4

5 回答 5

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

并提到一个可能的解决方法是修改您的主机文件以明确包含您正在访问的服务器的 ip/dns。

我尝试重新配置我的命名配置,但没有任何结果,以解决此问题。通过将以下行添加到我的 /etc/hosts 解决了这个问题:

194.97.55.147 mx.freenet.de

也许你可以试试这个?

于 2009-04-02T02:05:58.277 回答
1

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


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

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


编辑2:

我刚刚阅读了评论中写的内容,您的 allow_url_fopen 设置为 On,对此感到抱歉。但操作系统、PHP 版本和 phpinfo() 将有助于发现问题。

于 2009-04-06T19:34:11.820 回答
0

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

如果这不是一个选项,请尝试一些可以为您提供更详细错误消息的方法。我建议卷曲。至少,它应该产生更多信息的错误消息。

于 2009-04-02T03:31:38.600 回答
0

这失败的简单事实是因为在您的网络服务器上,您的 DNS 解析已损坏。

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

dig hostname

其中 hostname 是 PHPTHUMB 中的主机名

这很可能会失败。

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

并在以“nameserver”开头的任何其他行之前添加以下行

nameserver 4.2.2.2

这应该有望解决问题,尽管您可能必须重新启动 apache(或您正在使用的任何网络服务器)!

于 2009-04-06T22:05:39.647 回答
0

这里的问题是 php 无法解析您提供为 PHPTHUMB 的 url,如php.net 上的此错误报告中所述。这可能意味着它是操作系统/Web服务器的故障,在这种情况下,您可以手动将您要连接的服务器的IP地址输入到您的主机文件中。

于 2009-04-07T02:20:58.613 回答