简单的cURL无法正常工作

时间:2017-05-24 18:05:07

标签: php curl

我的代码在这里应该返回给我的网页源代码。

<?php
function curlGet($url){
  $ch = curl_init();

  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_URL, $url);

  $results = curl_exec($ch);

  curl_close($ch);

}

$packtPage = curlGet('https://www.google.com');

print_r($packtPage);

据我了解,此代码应返回并回显该网页的源代码。但是,运行此代码时我得到一个空白页。

在到处搜索了解为什么这不能按预期工作后,我排除了故障并发现注释掉以下行

// curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

网页显示

302 Moved

The document has moved here.

&#39;这里&#39;是一个重定向到给定的URL的链接。

请帮助我理解发生了什么!!

1 个答案:

答案 0 :(得分:3)

使用时

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$results = curl_exec($ch);

您告诉PHP“将cURL请求的输出存储在$results变量中,并且不向屏幕输出任何内容。

如果要查看输出,请按以下步骤修改代码,将$results的值返回到print_r函数:

<?php
function curlGet($url){
  $ch = curl_init();

  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_URL, $url);

  $results = curl_exec($ch);

  curl_close($ch);
  return $results;
}

$packtPage = curlGet('https://www.google.com');

print_r($packtPage);

正如GentlemanMax在评论中所建议的那样,在cURL请求中包含以下行也是一个好主意。此行告诉cURL遵循重定向,因为您收到HTTP/302状态代码,表示页面已移动。 Curl可以使用以下额外选项来遵循这些重定向:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);