PHP - Debugging Curl PHP - Debugging Curl curl curl

PHP - Debugging Curl


You can enable the CURLOPT_VERBOSE option and log that information to a (temporary) CURLOPT_STDERR:

// CURLOPT_VERBOSE: TRUE to output verbose information. Writes output to STDERR, // or the file specified using CURLOPT_STDERR.curl_setopt($handle, CURLOPT_VERBOSE, true);$verbose = fopen('php://temp', 'w+');curl_setopt($handle, CURLOPT_STDERR, $verbose);

You can then read it after curl has done the request:

$result = curl_exec($handle);if ($result === FALSE) {    printf("cUrl error (#%d): %s<br>\n", curl_errno($handle),           htmlspecialchars(curl_error($handle)));}rewind($verbose);$verboseLog = stream_get_contents($verbose);echo "Verbose information:\n<pre>", htmlspecialchars($verboseLog), "</pre>\n";

(I originally answered similar but more extended in a related question.)

More information like metrics about the last request is available via curl_getinfo. This information can be useful for debugging curl requests, too. A usage example, I would normally wrap that into a function:

$version = curl_version();extract(curl_getinfo($handle));$metrics = <<<EODURL....: $urlCode...: $http_code ($redirect_count redirect(s) in $redirect_time secs)Content: $content_type Size: $download_content_length (Own: $size_download) Filetime: $filetimeTime...: $total_time Start @ $starttransfer_time (DNS: $namelookup_time Connect: $connect_time Request: $pretransfer_time)Speed..: Down: $speed_download (avg.) Up: $speed_upload (avg.)Curl...: v{$version['version']}EOD;


You can enable the CURLOPT_VERBOSE option:

curl_setopt($curlhandle, CURLOPT_VERBOSE, true);

When CURLOPT_VERBOSE is set, output is written to STDERR or the file specified using CURLOPT_STDERR. The output is very informative.

You can also use tcpdump or wireshark to watch the network traffic.


Here is a simpler code for the same:

   curl_setopt($ch, CURLOPT_VERBOSE, 1);   curl_setopt($ch, CURLOPT_STDERR, $fp);

where $fp is a file handle to output errors. For example:

   $fp = fopen(dirname(__FILE__).'/errorlog.txt', 'w');

( Read on http://curl.haxx.se/mail/curlphp-2008-03/0064.html )