在php curl中传输总是空的

时间:2011-09-28 08:19:22

标签: php curl

我之前从未使用curl,因此我尝试设置一些基本的东西:查询google.com并编写它。这就是我所拥有的:

<?php

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'http://www.google.com');
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$buffer = curl_exec($curl_handle);
$curl_errno = curl_errno($ch);
$curl_error = curl_error($ch);
curl_close($curl_handle);

if ($curl_errno > 0) {
  echo "cURL Error ($curl_errno): $curl_error\n";
} else {
  if(empty($buffer)) {
    echo "No data received.";
  } else {
    echo "Data received: $buffer\n";
  }
}

?>

然而,它每次都会返回“没有收到数据”。

这是Kubuntu 11.04 x64,PHP版本5.3.5和cURL版本7.21.3。

2 个答案:

答案 0 :(得分:2)

您正在混合变量名称$ch$curl_handle。你不能这样做。保持一致($ch非常标准):

<?php

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'http://www.google.com');
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$buffer = curl_exec($ch); // Changed variable name here
$curl_errno = curl_errno($ch); // Removed duplicate line here
curl_close($ch); // Changed variable name here

?>

答案 1 :(得分:0)

修复此问题

$buffer = curl_exec($curl_handle);

$buffer = curl_exec($ch);

也应该是,

curl_close($ch)

不是$ curl_handle。顺便说一句,关闭卷曲并不是你做什么的必要。但它仍是一种很好的做法。