cURL GET请求在localhost上有效,但在Web服务器上不可用

时间:2018-10-07 07:31:16

标签: php

我正在使用cURL从网站获取数组。 它在localhost上可以完美运行,但是当我将其上传到Server时它返回NULL。 这是我的代码:

    $curl = curl_init();
$url = "http://staging.quran.com:3000/api/v3/chapters?language=en";
    curl_setopt_array($curl, array(
      CURLOPT_PORT => "3000",
      CURLOPT_URL => $url,
      CURLOPT_RETURNTRANSFER => true,
      CURLOPT_ENCODING => "",
      CURLOPT_MAXREDIRS => 10,
      CURLOPT_TIMEOUT => 0,
      CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
      CURLOPT_CUSTOMREQUEST => "GET",
      CURLOPT_POSTFIELDS => "{}",
      curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE)
    ));

    $response = curl_exec($curl);
    $err = curl_error($curl);

    curl_close($curl);

    if ($err) {
      echo "cURL Error #:" . $err;
    } else {
      echo $response;
    }

注意:它仅对此网址无效 它可以与其他所有网址(例如Google.com等)一起使用

这意味着我的服务器的cURL请求已启用!

任何人都可以帮助我!!

3 个答案:

答案 0 :(得分:0)

如果我没记错的话,请尝试使用var_dump($response)代替echo $response;$response是一个json对象而不是字符串。

答案 1 :(得分:0)

转到以下stackoverflow链接 Curl request not working on live server

检查您请求的服务器是否阻止了来自服务器的请求。尝试从服务器的外壳程序ping通该服务器(http://staging.quran.com:3000/api/v3/chapters?language=en

答案 2 :(得分:0)

您的代码没有问题,此外,当访问其他网站时,它在localhost和服务器上都可以正常工作。

确保服务器允许端口3000

上的传出连接

我很确定问题就在这里。