为什么使用PHP cURL的GET请求返回空白页?

时间:2020-04-06 07:25:20

标签: php curl

我正在尝试使用PHP和cURL运行GET请求。

下面是我的原始代码(摘自Postman,经过稍微编辑,Postman应用程序按预期返回API请求):

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "http://xxx.yyy.zzz",
  CURLOPT_HTTPHEADER => array(
    "apiPassword: password"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
print_r($response);


?>

网站使用标头密码来标识我可以访问的API。

当我在服务器上运行php页面时,它将返回一个空白页面。

我尝试过的事情:

添加错误检查:

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "http://xxx.yyy.zzz",
  CURLOPT_HTTPHEADER => array(
    "apiPassword: password"
  ),
));

$response = curl_exec($curl);

if(curl_errno($curl)){
    echo 'Curl error: ' . curl_error($curl);
}

curl_close($curl);
print_r($response);


?>

响应是添加了错误检查的是单行文本,没有显示错误代码以帮助发现故障:

卷曲错误:

为cURL添加getinfo:

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "http://xxx.yyy.zzz",
  CURLOPT_HTTPHEADER => array(
    "apiPassword: password"
  ),
));

$response = curl_exec($curl);

if(curl_errno($curl)){
    echo 'Curl error: ' . curl_error($curl);
}
echo "</br>";
print_r(curl_getinfo($curl));

curl_close($curl);
print_r($response);


?>

响应:

卷曲错误:

Array([url] => http://xxx.yyy.zzz [content_type] => [http_code] => 0 [header_size] => 0 [request_size] => 0 [文件时间] => -1 [ssl_verify_result] => 0 [重定向计数] => 0 [总时间] => 0 [namelookup_time] => 2.9E-5 [connect_time] => 0 [pretransfer_time] => 0 [size_upload] => 0 [size_download] => 0 [speed_download] => 0 [speed_upload] => 0 [download_content_length] => -1 [upload_content_length] => -1 [starttransfer_time] => 0 [redirect_time] => 0 [redirect_url] => [primary_ip] => [certinfo] => 数组()[primary_port] => 0 [local_ip] => [local_port] => 0)

尝试卷曲Google:

我试图查看是否是网站出现问题,所以我将URL更改为Google,并且收到了与上述相同的回复:

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "http://www.google.com",
));

$response = curl_exec($curl);

if(curl_errno($curl)){
    echo 'Curl error: ' . curl_error($curl);
}
echo "</br>";
print_r(curl_getinfo($curl));

curl_close($curl);
print_r($response);


?>

响应:

卷曲错误:

Array([url] => http://www.google.com/ [content_type] => [http_code] => 0 [header_size] => 0 [request_size] => 0 [filetime] => -1 [ssl_verify_result] => 0 [redirect_count] => 0 [total_time] => 0.001668 [namelookup_time] => 0.001726 [connect_time] => 0 [pretransfer_time] => 0 [size_upload] => 0 [size_download] => 0 [speed_download] => 0 [speed_upload] => 0 [download_content_length] => -1 [upload_content_length] => -1 [starttransfer_time] => 0 [redirect_time] => 0 [redirect_url] => [primary_ip] => [certinfo] => 数组()[primary_port] => 0 [local_ip] => [local_port] => 0)

有人知道cURL为什么不起作用吗?我想念什么吗?

TIA

1 个答案:

答案 0 :(得分:0)

其他人遇到我遇到的问题,我设法将其解决:

我改变了

if(curl_errno($curl)){
    echo 'Curl error: ' . curl_error($curl);
}

if($errno = curl_errno($curl)) {
    $error_message = curl_strerror($errno);
    echo "cURL error ({$errno}):\n {$error_message}";
}

这实际上给了我错误代码和描述,从而使我能够确定问题所在。我收到连接错误。 (7)

我必须在SELinux上启用httpd

setsebool -P httpd_can_network_connect on

现在按预期工作。