我目前正在使用图像处理脚本对上传的图像进行一些处理,而我在开发环境中遇到了问题。这个代码在我的生产服务器上运行。
错误是:
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没有产生任何结果,但内部工作完美。感谢大家的努力,
答案 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。