curl_errno

(PHP 4 >= 4.0.3, PHP 5, PHP 7, PHP 8)

curl_errno返回最后一个错误号

描述

curl_errno(CurlHandle $handle): int

返回上次 cURL 操作的错误号。

参数

handle

curl_init() 返回的 cURL 处理。

返回值

返回错误号,如果未发生错误,则返回 0(零)。

变更日志

版本 描述
8.0.0 handle 现在期望一个 CurlHandle 实例;以前,期望的是一个 resource

示例

示例 #1 curl_errno() 示例

<?php
// 创建一个指向不存在位置的 curl 处理
$ch = curl_init('http://404.php.net/');

// 执行
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_exec($ch);

// 检查是否发生错误
if(curl_errno($ch))
{
echo
'Curl error: ' . curl_error($ch);
}

// 关闭处理
curl_close($ch);
?>

参见

添加备注

用户贡献的备注 10 则备注

denis at reddodo dot com
13 年前
如果有人需要更多关于 curl 错误的信息
<?php
$error_codes
=array(
[
1] => 'CURLE_UNSUPPORTED_PROTOCOL',
[
2] => 'CURLE_FAILED_INIT',
[
3] => 'CURLE_URL_MALFORMAT',
[
4] => 'CURLE_URL_MALFORMAT_USER',
[
5] => 'CURLE_COULDNT_RESOLVE_PROXY',
[
6] => 'CURLE_COULDNT_RESOLVE_HOST',
[
7] => 'CURLE_COULDNT_CONNECT',
[
8] => 'CURLE_FTP_WEIRD_SERVER_REPLY',
[
9] => 'CURLE_REMOTE_ACCESS_DENIED',
[
11] => 'CURLE_FTP_WEIRD_PASS_REPLY',
[
13] => 'CURLE_FTP_WEIRD_PASV_REPLY',
[
14]=>'CURLE_FTP_WEIRD_227_FORMAT',
[
15] => 'CURLE_FTP_CANT_GET_HOST',
[
17] => 'CURLE_FTP_COULDNT_SET_TYPE',
[
18] => 'CURLE_PARTIAL_FILE',
[
19] => 'CURLE_FTP_COULDNT_RETR_FILE',
[
21] => 'CURLE_QUOTE_ERROR',
[
22] => 'CURLE_HTTP_RETURNED_ERROR',
[
23] => 'CURLE_WRITE_ERROR',
[
25] => 'CURLE_UPLOAD_FAILED',
[
26] => 'CURLE_READ_ERROR',
[
27] => 'CURLE_OUT_OF_MEMORY',
[
28] => 'CURLE_OPERATION_TIMEDOUT',
[
30] => 'CURLE_FTP_PORT_FAILED',
[
31] => 'CURLE_FTP_COULDNT_USE_REST',
[
33] => 'CURLE_RANGE_ERROR',
[
34] => 'CURLE_HTTP_POST_ERROR',
[
35] => 'CURLE_SSL_CONNECT_ERROR',
[
36] => 'CURLE_BAD_DOWNLOAD_RESUME',
[
37] => 'CURLE_FILE_COULDNT_READ_FILE',
[
38] => 'CURLE_LDAP_CANNOT_BIND',
[
39] => 'CURLE_LDAP_SEARCH_FAILED',
[
41] => 'CURLE_FUNCTION_NOT_FOUND',
[
42] => 'CURLE_ABORTED_BY_CALLBACK',
[
43] => 'CURLE_BAD_FUNCTION_ARGUMENT',
[
45] => 'CURLE_INTERFACE_FAILED',
[
47] => 'CURLE_TOO_MANY_REDIRECTS',
[
48] => 'CURLE_UNKNOWN_TELNET_OPTION',
[
49] => 'CURLE_TELNET_OPTION_SYNTAX',
[
51] => 'CURLE_PEER_FAILED_VERIFICATION',
[
52] => 'CURLE_GOT_NOTHING',
[
53] => 'CURLE_SSL_ENGINE_NOTFOUND',
[
54] => 'CURLE_SSL_ENGINE_SETFAILED',
[
55] => 'CURLE_SEND_ERROR',
[
56] => 'CURLE_RECV_ERROR',
[
58] => 'CURLE_SSL_CERTPROBLEM',
[
59] => 'CURLE_SSL_CIPHER',
[
60] => 'CURLE_SSL_CACERT',
[
61] => 'CURLE_BAD_CONTENT_ENCODING',
[
62] => 'CURLE_LDAP_INVALID_URL',
[
63] => 'CURLE_FILESIZE_EXCEEDED',
[
64] => 'CURLE_USE_SSL_FAILED',
[
65] => 'CURLE_SEND_FAIL_REWIND',
[
66] => 'CURLE_SSL_ENGINE_INITFAILED',
[
67] => 'CURLE_LOGIN_DENIED',
[
68] => 'CURLE_TFTP_NOTFOUND',
[
69] => 'CURLE_TFTP_PERM',
[
70] => 'CURLE_REMOTE_DISK_FULL',
[
71] => 'CURLE_TFTP_ILLEGAL',
[
72] => 'CURLE_TFTP_UNKNOWNID',
[
73] => 'CURLE_REMOTE_FILE_EXISTS',
[
74] => 'CURLE_TFTP_NOSUCHUSER',
[
75] => 'CURLE_CONV_FAILED',
[
76] => 'CURLE_CONV_REQD',
[
77] => 'CURLE_SSL_CACERT_BADFILE',
[
78] => 'CURLE_REMOTE_FILE_NOT_FOUND',
[
79] => 'CURLE_SSH',
[
80] => 'CURLE_SSL_SHUTDOWN_FAILED',
[
81] => 'CURLE_AGAIN',
[
82] => 'CURLE_SSL_CRL_BADFILE',
[
83] => 'CURLE_SSL_ISSUER_ERROR',
[
84] => 'CURLE_FTP_PRET_FAILED',
[
84] => 'CURLE_FTP_PRET_FAILED',
[
85] => 'CURLE_RTSP_CSEQ_ERROR',
[
86] => 'CURLE_RTSP_SESSION_ERROR',
[
87] => 'CURLE_FTP_BAD_FILE_LIST',
[
88] => 'CURLE_CHUNK_FAILED');

?>
nimasdj AT yahoo [DOT] com
9 年前
致 coder.ua[at]gmail.com

请注意有些错误有超过一个常量

[CURLE_FTP_PARTIAL_FILE] 18
[CURLE_PARTIAL_FILE] 18

[CURLE_HTTP_NOT_FOUND] 22
[CURLE_HTTP_RETURNED_ERROR] 22

[CURLE_OPERATION_TIMEDOUT] 28
[CURLE_OPERATION_TIMEOUTED] 28

[CURLE_BAD_DOWNLOAD_RESUME] 36
[CURLE_FTP_BAD_DOWNLOAD_RESUME] 36
bozo_z_clown at yahoo dot com
15 年前
请注意,您可以使用 curl_multi_info_read() 在 curl_multi_exec() 循环中检测错误,这些错误在稍后使用 curl_errno() 时不会显示。 这在连接错误中尤其如此。
coder.ua[at]gmail.com
11 年前
FreeBSD 8.2-RELEASE 上 PHP 5.4.7 中所有可用的 cURL 错误常量和值

CURLE_UNSUPPORTED_PROTOCOL => 1
CURLE_FAILED_INIT => 2
CURLE_URL_MALFORMAT => 3
CURLE_URL_MALFORMAT_USER => 4
CURLE_COULDNT_RESOLVE_PROXY => 5
CURLE_COULDNT_RESOLVE_HOST => 6
CURLE_COULDNT_CONNECT => 7
CURLE_FTP_WEIRD_SERVER_REPLY => 8
CURLE_FTP_ACCESS_DENIED => 9
CURLE_FTP_USER_PASSWORD_INCORRECT => 10
CURLE_FTP_WEIRD_PASS_REPLY => 11
CURLE_FTP_WEIRD_USER_REPLY => 12
CURLE_FTP_WEIRD_PASV_REPLY => 13
CURLE_FTP_WEIRD_227_FORMAT => 14
CURLE_FTP_CANT_GET_HOST => 15
CURLE_FTP_CANT_RECONNECT => 16
CURLE_FTP_COULDNT_SET_BINARY => 17
CURLE_PARTIAL_FILE => 18
CURLE_FTP_COULDNT_RETR_FILE => 19
CURLE_FTP_WRITE_ERROR => 20
CURLE_FTP_QUOTE_ERROR => 21
CURLE_HTTP_NOT_FOUND => 22
CURLE_WRITE_ERROR => 23
CURLE_MALFORMAT_USER => 24
CURLE_FTP_COULDNT_STOR_FILE => 25
CURLE_READ_ERROR => 26
CURLE_OUT_OF_MEMORY => 27
CURLE_OPERATION_TIMEOUTED => 28
CURLE_FTP_COULDNT_SET_ASCII => 29
CURLE_FTP_PORT_FAILED => 30
CURLE_FTP_COULDNT_USE_REST => 31
CURLE_FTP_COULDNT_GET_SIZE => 32
CURLE_HTTP_RANGE_ERROR => 33
CURLE_HTTP_POST_ERROR => 34
CURLE_SSL_CONNECT_ERROR => 35
CURLE_FTP_BAD_DOWNLOAD_RESUME => 36
CURLE_FILE_COULDNT_READ_FILE => 37
CURLE_LDAP_CANNOT_BIND => 38
CURLE_LDAP_SEARCH_FAILED => 39
CURLE_LIBRARY_NOT_FOUND => 40
CURLE_FUNCTION_NOT_FOUND => 41
CURLE_ABORTED_BY_CALLBACK => 42
CURLE_BAD_FUNCTION_ARGUMENT => 43
CURLE_BAD_CALLING_ORDER => 44
CURLE_HTTP_PORT_FAILED => 45
CURLE_BAD_PASSWORD_ENTERED => 46
CURLE_TOO_MANY_REDIRECTS => 47
CURLE_UNKNOWN_TELNET_OPTION => 48
CURLE_TELNET_OPTION_SYNTAX => 49
CURLE_OBSOLETE => 50
CURLE_SSL_PEER_CERTIFICATE => 51
CURLE_GOT_NOTHING => 52
CURLE_SSL_ENGINE_NOTFOUND => 53
CURLE_SSL_ENGINE_SETFAILED => 54
CURLE_SEND_ERROR => 55
CURLE_RECV_ERROR => 56
CURLE_SHARE_IN_USE => 57
CURLE_SSL_CERTPROBLEM => 58
CURLE_SSL_CIPHER => 59
CURLE_SSL_CACERT => 60
CURLE_BAD_CONTENT_ENCODING => 61
CURLE_LDAP_INVALID_URL => 62
CURLE_FILESIZE_EXCEEDED => 63
CURLE_FTP_SSL_FAILED] => 64
cubefox at web dot NOSPAMPLEASE dot de
4 年前
上面的手册只提到了如何使用 curl_error() 从 cURL 句柄 ($ch) 中获取错误描述
<?php
$description
= curl_error($ch);
?>

但您也可以使用 curl_strerror() 从错误号本身获取描述
<?php
$description
= curl_strerror(curl_errno($ch));
?>

如果您只能访问错误号,而不能访问 cURL 句柄,则后者非常有用。
david at liip dot ch
12 年前
您应该查看 https://php.net/manual/en/curl.constants.php 获取错误代码,而不是查看链接的官方 cURL 文档。 至少提到的错误代码不同,至少在其他页面上提到的那个错误代码。

在 PHP 中,cURL 错误号 28 称为

CURLE_OPERATION_TIMEOUTED

而在官方网站上是

CURLE_OPERATION_TIMEDOUT
nono303
2 年前
CURLcode v7.81 反转了 PHP 的数组(来自 \curl\include\curl\curl.h l.495)
https://gist.github.com/nono303/de1256f55e26fdbcc3e0d72e397ac4a1
gmail@asmqb7
5 年前
/!\ 注意:如果您使用的是 curl 多处理句柄

此函数在通过 curl_multi_info_read() 访问的 curl 句柄上运行时,会在错误条件下返回 0。

您必须查看 curl_multi_info_read() 返回的数据以获取真正的错误号。数据就在那里。
Eugene Kunkel
7 年前
获取所有 CURLE_* 错误常量、其适用的错误消息及其适用的错误代码的当前列表。这对于制作包装器类或将 cURL 错误映射到特定异常对象很有用。

<?php

$list
= get_defined_constants(TRUE);
$list = preg_grep('/^CURLE_/', array_flip($list['curl']));
$result = array();

foreach (
$list as $const) {
$result[$const] = array
(
'code' => constant($const),
'message' => curl_strerror(constant($const))
);
}

echo
"<pre>";
echo
print_r($result, TRUE);
echo
"</pre>";
Jacques Manukyan
16 年前
错误代码直接来自 curl 源代码。具体来说,查看 curl.h 文件,它会告诉你每个返回代码的确切含义。

这些代码中的大多数都很神秘,但至少你可以了解到错误是什么。

以下是 curl.h 中错误的简短代码片段

CURLE_OK = 0,
CURLE_UNSUPPORTED_PROTOCOL, /* 1 */
CURLE_FAILED_INIT, /* 2 */
CURLE_URL_MALFORMAT, /* 3 */
CURLE_URL_MALFORMAT_USER, /* 4 - 未使用 */
CURLE_COULDNT_RESOLVE_PROXY, /* 5 */
CURLE_COULDNT_RESOLVE_HOST, /* 6 */
CURLE_COULDNT_CONNECT, /* 7 */
CURLE_FTP_WEIRD_SERVER_REPLY, /* 8 */

请注意,代码 0 表示没有错误,表示成功。
To Top