如果您想获取错误消息,请确保在关闭当前 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 错误: ' . curl_error($ch);
}
else
{
echo '操作完成,没有错误';
}
// 关闭句柄
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。