我有以下使用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地址?
答案 0 :(得分:4)
“有什么可能导致cURL尝试连接到0.0.0.31,这是AFAIK,甚至不是有效的IP地址?”
你的DNS很糟糕。我测试了你的代码并且它有效。
答案 1 :(得分:0)
当你说“从命令行运行时代码工作正常”,你的意思是你已经使用PHP CLI解释器运行它吗?如果是这种情况,您可以检查Web服务器上php -i
与phpinfo()
的输出之间是否存在明显的不匹配。它可能是一些奇怪的版本不匹配或环境问题,虽然你的猜测和我的一样好。
如果你(正如我原先想的那样)只是谈论运行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";
至少解决了我的问题!