为什么cURL报告无效的IP地址为错误?

时间:2010-09-17 23:23:47

标签: php curl dns

我有以下使用cURL的PHP​​代码:

$ch = curl_init();

curl_setopt($ch,CURLOPT_URL,"http://area51.stackexchange.com/users/flair/31.json");
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);

$a_data = json_decode(curl_exec($ch));

echo curl_error($ch);

当我尝试通过HTTP访问页面时,我收到以下错误:

  

无法连接到0.0.0.31:无效参数

但是,从命令行运行时代码工作正常。

可能会导致cURL尝试连接到0.0.0.31,这是AFAIK,甚至不是有效的IP地址?

3 个答案:

答案 0 :(得分:4)

“有什么可能导致cURL尝试连接到0.0.0.31,这是AFAIK,甚至不是有效的IP地址?”

你的DNS很糟糕。我测试了你的代码并且它有效。

答案 1 :(得分:0)

当你说“从命令行运行时代码工作正常”,你的意思是你已经使用PHP CLI解释器运行它吗?如果是这种情况,您可以检查Web服务器上php -iphpinfo()的输出之间是否存在明显的不匹配。它可能是一些奇怪的版本不匹配或环境问题,虽然你的猜测和我的一样好。

如果你(正如我原先想的那样)只是谈论运行curl命令,你也可以尝试检查那里的版本号或环境变量。

答案 2 :(得分:0)

我遇到了同样的问题。

我认为你可能做的是像这样构建网址:

$url = "http://area51.stackexchange.com/users/flair/" + 31 + ".json";

由于某种原因,网址被翻译为0.0.0.31。

而是尝试连接字符串,如下所示:

$url = "http://area51.stackexchange.com/users/flair/" . 31 . ".json";

至少解决了我的问题!