如果你想获取错误消息,请确保在关闭当前 cURL 会话之前获取它,否则错误消息将被重置为空字符串。
(PHP 4 >= 4.0.3, PHP 5, PHP 7, PHP 8)
curl_error — 返回包含当前会话最后一个错误的字符串
返回错误消息或 ''
(空字符串),如果未发生错误。
版本 | 描述 |
---|---|
8.0.0 |
handle 现在期望一个 CurlHandle 实例;以前,期望一个 resource。 |
示例 #1 curl_error() 示例
<?php
// 创建一个指向不存在位置的 curl 句柄
$ch = curl_init('http://404.php.net/');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
if(curl_exec($ch) === false)
{
echo 'Curl error: ' . curl_error($ch);
}
else
{
echo 'Operation completed without any errors';
}
// 关闭句柄
curl_close($ch);
?>
为了让 404 响应实际上触发错误,就像示例试图演示的那样,应该设置以下选项
curl_setopt($ch,CURLOPT_FAILONERROR,true);
如 http://curl.haxx.se/libcurl/c/libcurl-errors.html
CURLE_HTTP_RETURNED_ERROR (22)
如果 CURLOPT_FAILONERROR 设置为 TRUE 并且 HTTP 服务器返回的错误代码大于或等于 400,则会返回此错误代码。(此错误代码以前被称为 CURLE_HTTP_NOT_FOUND。)
如果你使用的是 curl_multi 并且发生错误,curl_error() 将保持为空,直到你调用 curl_multi_info_read()。该函数将 curl 库中的信息“泵送”到 curl_error() 返回有用字符串的程度。
这实际上应该添加到文档中,因为它并不明显。
curl_error 不是 curl_errno 的文本表示。
它是一个实际的错误*消息*。
如果你想要错误*代码*的文本表示,请查找 curl_strerror。