您采取了哪些措施来解决PHP cURL的问题?

Ala*_*orm 12 php debugging curl http

几乎任何正在运行的PHP程序员都必须使用CURL来发送原始HTTP请求,无论是用于信用卡支付处理,恶意屏幕抓取还是介于两者之间.

几乎所有PHP程序员聚集的论坛都有很多人无法获得cURL功能来做他们想做的事情.

当cURL不适合您时,您使用什么故障排除技术来找出它无法正常工作的原因?PHP的卷曲实现有什么奇怪的问题你遇到了什么?如果有人在论坛上询问"HALP MY CURL IZ BROKEN"问题,您采取了哪些步骤来弄清楚他们的请求无效的原因?

Vol*_*erK 15

我发现CURLINFO_HEADER_OUT选项非常有用.

<?php
$curl = curl_init('http://www.php.net');

curl_setopt($curl, CURLOPT_HEADERFUNCTION, 'dbg_curl_data');
curl_setopt($curl, CURLOPT_WRITEFUNCTION, 'dbg_curl_data');
curl_setopt($curl, CURLINFO_HEADER_OUT, true);

curl_exec($curl);

echo '<fieldset><legend>request headers</legend>
  <pre>', htmlspecialchars(curl_getinfo($curl, CURLINFO_HEADER_OUT)), '</pre>
</fieldset>';

echo '<fieldset><legend>response</legend>
  <pre>', htmlspecialchars(dbg_curl_data(null)), '</pre>
</fieldset>';

function dbg_curl_data($curl, $data=null) {
  static $buffer = '';

  if ( is_null($curl) ) {
    $r = $buffer;
    $buffer = '';
    return $r;
  }
  else {
    $buffer .= $data;
    return strlen($data);
  }
}