威尼斯www.9778.com-威尼斯正版官方网站

CURL状态码列表(详细)

日期:2020-02-14编辑作者:编程人生

77

背景概述:
游戏接口是使用PHP cURL扩展进行请求操作。但是,被请求的服务器经常会无故的不响应或者超时。总之,就是请求之后收不到响应回来的数据。这时候可不能说对方API接口有问题,或者,服务器有故障。总之,可能出现的问题是非常之多。不能一概而论。

LDAP搜索失败

一、给出一段常用的PHP cURL代码:

URL中引用资源不存在

function sendRequestGame($url)
{
    $header = array('Expect:');
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
    curl_setopt($ch, CURLOPT_TIMEOUT, 2);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 3);
 $return  = curl_exec( $ch );
 $errno = curl_errno( $ch );
 $info  = curl_getinfo( $ch );
 $info['errno'] = $errno;
    curl_close( $ch );

31

改进之后,增加了两个函数:

不合式的telnet 选项。

/**
 * 打日志。
 * @param string $log 日志内容。
 * @return void
 */
function putLog( $log )
{
 $log .= "nn";
 $logDir = dirname( __FILE__ );
 $logPath = $logDir . "/curl_log.txt";
 if ( !file_exists( $logPath ) )
 {
  $handle = fopen( $logPath, 'w' );
  fclose ( $handle );
 }
 file_put_contents( $logPath, $log, FILE_APPEND );
}

无法解析代理

function sendRequestGame($url)
{
    $header = array('Expect:');
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
    $retData = curl_exec( $ch );
    curl_close( $ch );

返回正常

我相信大家人字面意思就能看懂7788.不明白的话,自己去看PHP官方手册吧。

60

经常使用PHP cURL函数的人,一定不会陌生吧。

FTP 无法STOR 文件。服务器拒绝了用于FTP 上传的STOR 操作。

Array
(
    [url] =>
    [content_type] => text/html; charset=UTF-8
    [http_code] => 200
    [header_size] => 321
    [request_size] => 53
    [filetime] => -1
    [ssl_verify_result] => 0
    [redirect_count] => 0
    [total_time] => 2.075
    [namelookup_time] => 0
    [connect_time] => 0.031
    [pretransfer_time] => 0.031
    [size_upload] => 0
    [size_download] => 79042
    [speed_download] => 38092
    [speed_upload] => 0
    [download_content_length] => -1
    [upload_content_length] => 0
    [starttransfer_time] => 1.388
    [redirect_time] => 0
    [certinfo] => Array
        (
        )

70

现在调用 sendRequestGame 函数的时候,会将每次请求的信息给json_encode之后保存到日志文件 curl_log.txt中。这样,我们就可以清楚地知道,每次请求到底发生了什么情况。

69

同时,我也相信大部分PHPer也是这样写代码的。至少核心部分就是这样,根本没有判断这个请求失败了,是什么情况产生的。

无法将SSL 加密引擎设置为默认。

第二个是函数非常重要,curl_getinfo函数会获取当前请求的相关信息:

75

 代码如下

需要字符转换功能。

$errno = curl_errno( $ch );
$info  = curl_getinfo( $ch );这两个函数非常的关键。第一个 curl_errno是返回当前请求的错误码,0代表没有错误,是一个Ok正常的请求。非0代码请求出现了错误。但是,大部分错误发生时,请求都没有正确到达URL所指定的服务器。如:主机打不到、网址错误、404。当然,不排除有500这种内部服务器错误的存在。

未支持的协议。此版cURL 不支持这一协议。

    return $retData;
}

5

看代码:

在TFTP 服务器上找不到文件。

现在我们为了保证每次请求的稳定可靠性,必须加入日志功能。即把失败时请求的相关参数状态和错误码一起记录到日志中。方便,我们失败之后去检查。

访问超时

 代码如下

读错误。各类读取问题。

诚然,通过严重的安全事故导致我必须重新审核这个cURL库,该怎样保证我的请求是稳定可靠的。当出现失败之后,我要知道是什么原因导致的。第一时间知道并反馈到人,进行及时的沟通协调与修复。

错误的协议

 $log = json_encode( $info );
 putLog( $log );

内部错误

以下,我再附上 curl error code ,即 curl_errno函数返回的数字说明:
CURLE_UNSUPPORTED_PROTOCOL (1) – 您传送给 libcurl 的网址使用了此 libcurl 不支持的协议。 可能是您没有使用的编译时选项造成了这种情况(可能是协议字符串拼写有误,或没有指定协议 libcurl 代码)。
CURLE_FAILED_INIT (2) – 非常早期的初始化代码失败。 可能是内部错误或问题。
CURLE_URL_MALFORMAT (3) – 网址格式不正确。
CURLE_COULDNT_RESOLVE_PROXY (5) – 无法解析代理服务器。 指定的代理服务器主机无法解析。
CURLE_COULDNT_RESOLVE_HOST (6) – 无法解析主机。 指定的远程主机无法解析。
CURLE_COULDNT_CONNECT (7) – 无法通过 connect() 连接至主机或代理服务器。
CURLE_FTP_WEIRD_SERVER_REPLY (8) – 在连接到 FTP 服务器后,libcurl 需要收到特定的回复。 此错误代码表示收到了不正常或不正确的回复。 指定的远程服务器可能不是正确的 FTP 服务器。
CURLE_REMOTE_ACCESS_DENIED (9) – 我们无法访问网址中指定的资源。 对于 FTP,如果尝试更改为远程目录,就会发生这种情况。
CURLE_FTP_WEIRD_PASS_REPLY (11) – 在将 FTP 密码发送到服务器后,libcurl 需要收到正确的回复。 此错误代码表示返回的是意外的代码。
CURLE_FTP_WEIRD_PASV_REPLY (13) – libcurl 无法从服务器端收到有用的结果,作为对 PASV 或 EPSV 命令的响应。 服务器有问题。
CURLE_FTP_WEIRD_227_FORMAT (14) – FTP 服务器返回 227 行作为对 PASV 命令的响应。如果 libcurl 无法解析此行,就会返回此代码。
CURLE_FTP_CANT_GET_HOST (15) – 在查找用于新连接的主机时出现内部错误。
CURLE_FTP_COULDNT_SET_TYPE (17) – 在尝试将传输模式设置为二进制或 ascii 时发生错误。
CURLE_PARTIAL_FILE (18) – 文件传输尺寸小于或大于预期。当服务器先报告了一个预期的传输尺寸,然后所传送的数据与先前指定尺寸不相符时,就会发生此错误。
CURLE_FTP_COULDNT_RETR_FILE (19) – ‘RETR’ 命令收到了不正常的回复,或完成的传输尺寸为零字节。
CURLE_QUOTE_ERROR (21) – 在向远程服务器发送自定义 “QUOTE” 命令时,其中一个命令返回的错误代码为 400 或更大的数字(对于 FTP),或以其他方式表明命令无法成功完成。
CURLE_HTTP_RETURNED_ERROR (22) – 如果 CURLOPT_FAILONERROR 设置为 TRUE,且 HTTP 服务器返回 >= 400 的错误代码,就会返回此代码。 (此错误代码以前又称为 CURLE_HTTP_NOT_FOUND。)
CURLE_WRITE_ERROR (23) – 在向本地文件写入所收到的数据时发生错误,或由写入回调 (write callback) 向 libcurl 返回了一个错误。
CURLE_UPLOAD_FAILED (25) – 无法开始上传。 对于 FTP,服务器通常会拒绝执行 STOR 命令。错误缓冲区通常会提供服务器对此问题的说明。 (此错误代码以前又称为 CURLE_FTP_COULDNT_STOR_FILE。)
CURLE_READ_ERROR (26) – 读取本地文件时遇到问题,或由读取回调 (read callback) 返回了一个错误。
CURLE_OUT_OF_MEMORY (27) – 内存分配请求失败。此错误比较严重,若发生此错误,则表明出现了非常严重的问题。
CURLE_OPERATION_TIMEDOUT (28) – 操作超时。 已达到根据相应情况指定的超时时间。 请注意: 自 Urchin 6.6.0.2 开始,超时时间可以自行更改。 要指定远程日志下载超时,请打开 urchin.conf 文件,取消以下行的注释标记:
#DownloadTimeout: 30
CURLE_FTP_PORT_FAILED (30) – FTP PORT 命令返回错误。 在没有为 libcurl 指定适当的地址使用时,最有可能发生此问题。 请参阅 CURLOPT_FTPPORT。
CURLE_FTP_COULDNT_USE_REST (31) – FTP REST 命令返回错误。如果服务器正常,则应当不会发生这种情况。
CURLE_RANGE_ERROR (33) – 服务器不支持或不接受范围请求。
CURLE_HTTP_POST_ERROR (34) – 此问题比较少见,主要由内部混乱引发。
CURLE_SSL_CONNECT_ERROR (35) – 同时使用 SSL/TLS 时可能会发生此错误。您可以访问错误缓冲区查看相应信息,其中会对此问题进行更详细的介绍。可能是证书(文件格式、路径、许可)、密码及其他因素导致了此问题。
CURLE_FTP_BAD_DOWNLOAD_RESUME (36) – 尝试恢复超过文件大小限制的 FTP 连接。
CURLE_FILE_COULDNT_READ_FILE (37) – 无法打开 FILE:// 路径下的文件。原因很可能是文件路径无法识别现有文件。 建议您检查文件的访问权限。
CURLE_LDAP_CANNOT_BIND (38) – LDAP 无法绑定。LDAP 绑定操作失败。
CURLE_LDAP_SEARCH_FAILED (39) – LDAP 搜索无法进行。
CURLE_FUNCTION_NOT_FOUND (41) – 找不到函数。 找不到必要的 zlib 函数。
CURLE_ABORTED_BY_CALLBACK (42) – 由回调中止。 回调向 libcurl 返回了 “abort”。
CURLE_BAD_FUNCTION_ARGUMENT (43) – 内部错误。 使用了不正确的参数调用函数。
CURLE_INTERFACE_FAILED (45) – 界面错误。 指定的外部界面无法使用。 请通过 CURLOPT_INTERFACE 设置要使用哪个界面来处理外部连接的来源 IP 地址。 (此错误代码以前又称为 CURLE_HTTP_PORT_FAILED。)
CURLE_TOO_MANY_REDIRECTS (47) – 重定向过多。 进行重定向时,libcurl 达到了网页点击上限。请使用 CURLOPT_MAXREDIRS 设置上限。
CURLE_UNKNOWN_TELNET_OPTION (48) – 无法识别以 CURLOPT_TELNETOPTIONS 设置的选项。 请参阅相关文档。
CURLE_TELNET_OPTION_SYNTAX (49) – telnet 选项字符串的格式不正确。
CURLE_PEER_FAILED_VERIFICATION (51) – 远程服务器的 SSL 证书或 SSH md5 指纹不正确。
CURLE_GOT_NOTHING (52) – 服务器未返回任何数据,在相应情况下,未返回任何数据就属于出现错误。
CURLE_SSL_ENGINE_NOTFOUND (53) – 找不到指定的加密引擎。
CURLE_SSL_ENGINE_SETFAILED (54) – 无法将选定的 SSL 加密引擎设为默认选项。
CURLE_SEND_ERROR (55) – 无法发送网络数据。
CURLE_RECV_ERROR (56) – 接收网络数据失败。
CURLE_SSL_CERTPROBLEM (58) – 本地客户端证书有问题
CURLE_SSL_CIPHER (59) – 无法使用指定的密钥
CURLE_SSL_CACERT (60) – 无法使用已知的 CA 证书验证对等证书
CURLE_BAD_CONTENT_ENCODING (61) – 无法识别传输编码
CURLE_LDAP_INVALID_URL (62) – LDAP 网址无效
CURLE_FILESIZE_EXCEEDED (63) – 超过了文件大小上限
CURLE_USE_SSL_FAILED (64) – 请求的 FTP SSL 级别失败
CURLE_SEND_FAIL_REWIND (65) – 进行发送操作时,curl 必须回转数据以便重新传输,但回转操作未能成功
CURLE_SSL_ENGINE_INITFAILED (66) – SSL 引擎初始化失败
CURLE_LOGIN_DENIED (67) – 远程服务器拒绝 curl 登录(7.13.1 新增功能)
CURLE_TFTP_NOTFOUND (68) – 在 TFTP 服务器上找不到文件
CURLE_TFTP_PERM (69) – 在 TFTP 服务器上遇到权限问题
CURLE_REMOTE_DISK_FULL (70) – 服务器磁盘空间不足
CURLE_TFTP_ILLEGAL (71) – TFTP 操作非法
CURLE_TFTP_UNKNOWNID (72) – TFTP 传输 ID 未知
CURLE_REMOTE_FILE_EXISTS (73) – 文件已存在,无法覆盖
CURLE_TFTP_NOSUCHUSER (74) – 运行正常的 TFTP 服务器不会返回此错误
CURLE_CONV_FAILED (75) – 字符转换失败
CURLE_CONV_REQD (76) – 调用方必须注册转换回调
CURLE_SSL_CACERT_BADFILE (77) – 读取 SSL CA 证书时遇到问题(可能是路径错误或访问权限问题)
CURLE_REMOTE_FILE_NOT_FOUND (78) – 网址中引用的资源不存在
CURLE_SSH (79) – SSH 会话中发生无法识别的错误
CURLE_SSL_SHUTDOWN_FAILED (80) – 无法终止 SSL 连接

30

    return $return;
}

未能关闭SSL 连接。

 代码如下

请求协议错误

    [redirect_url] =>

81

内部错误。由一个不正确参数调用了功能。

初始化SSL 引擎失败。

状态原因

1

正常访问

FTP错误

访问资源错误

63

过多的重定向

22

字符转换失败

2

peer 证书无法被已知的CA 证书验证。

HTTP POST 错误。内部POST 请求产生错误。

找不到SSL 加密引擎。

无法解析代理。无法解析给定代理主机。

28

25

签发检查失败(在7.19.0版中增加) 。

本地客户端证书

49

19

72

命令成功完成

加密引擎未找到

43

无法载入CRL文件

79

23

56

LDAP 无法绑定。LDAP 绑定(bind)操作失败。

衰竭接收网络数据

内部故障

37

41

在接收网络数据时失败。

TFTP 服务器磁盘空间不足。

内部发生错误

错误TFTP服务器

未找到文件

9

71

发送此数据需要的回卷(rewind)失败。

初始化代码失败

发行人检查失败

服务器无返回内容

无权限

结果错误

74

TELNET格式错误

62

文件超过最大大小

58

78

文件无法读取。无法打开文件。权限问题?

80

HTTP range 错误。range "命令"不起作用。

本地证书有问题。

无此用户(TFTP) 。

FTP PORT 失败。PORT 命令失败。并非所有的FTP 服务器支持PORT 命令,请
尝试使用被动(PASV)传输代替!

HTTP 找不到网页。找不到所请求的URL 或返回另一个HTTP 400或以上错误。
此返回代码只出现在使用了-f/--fail 选项以后。

无法识别的传输编码

URL格式不正确

21

文件传输短或大于预期

RETR命令传输完成

FTP密码错误

SSL引擎失败

无效的LDAP URL。

错误发生在SSH会话

CA证书权限

3

URL 中引用的资源不存在。

无法使用指定的SSL 密码。

无法加载CRL 文件,丢失或格式不正确(在7.19.0版中增加) 。

35

用户名、密码或类似的信息未被接受,cURL 登录失败。

下载无法恢复

不支持请求

无法解析主机地址

凭证无法验证

SSH 会话期间发生一个未知错误。

61

必须记录回调

回调错误

无法发送网络数据

FTP 非正常的的PASV 应答,cURL 无法解析发送到PASV 请求的应答。

45

服务器无任何应答,该情况在此处被认为是一个错误。

SSL/TLS握手失败

字符转换失败。

操作超时。到达指定的超时期限条件。

64

36

FTP回应PASV命令

功能无法找到。无法找到必要的LDAP 功能。

66

0

FTP失败

68

18

状态码

超过最大文件尺寸。

文件已存在(TFTP) 。

解释

54

FTP 非正常的227格式。cURL 无法解析服务器发送的227行。

无法连接到主机。

FTP 非正常的服务器应答。cURL 无法解析服务器发送的数据。

55

6

未知TFTP传输的ID

初始化失败。

无法连接到主机

指定了未知TELNET 选项。

8

LDAP 搜索失败。

函数没有找到

73

14

超出服务器磁盘空间

读SSL 证书出现问题(路径?访问权限? ) 。

38

部分文件。只有部分文件被传输。

倒带操作失败

11

CURL状态码列表

写入错误。cURL 无法向本地文件系统或类似目的写入数据。

7

27

15

26

接口错误

52

59

FTP 无法连接到主机。无法解析在227行中获取的主机IP。

76

48

内存不足。内存分配请求失败。

远程服务器的SSL证书

无法启动上传

65

33

无法辨识的传输编码。

FTP端口错误

FTP 无法设定为二进制传输。无法改变传输方式到二进制。

无法识别选项

中止的回调

83

URL 格式错误。语法不正确。

无法解析主机。无法解析给定的远程主机。

4

LDAP可没有约束力

发送网络数据失败。

要求的FTP 的SSL 水平失败。

无法使用密码

TFTP 服务器权限有问题。

FTP quote 错误。quote 命令从服务器返回错误。

FTP 访问被拒绝。服务器拒绝登入或无法获取您想要的特定资源或目录。最有可
能的是您试图进入一个在此服务器上不存在的目录。

文件已经存在

FTP 非正常的PASS 回复。cURL 无法解析发送到PASS 请求的应答。

未知TFTP 传输编号(ID)。

设置传输模式为二进制

服务未准备

82

远程服务器不可用

peer 的SSL 证书或SSH 的MD5指纹没有确定。

FTP 无法使用REST 命令。REST 命令失败。此命令用来恢复的FTP 传输。

过多的重定向。cURL 达到了跟随重定向设定的最大限额跟

42

非法TFTP操作

由回调终止。应用程序告知cURL 终止运作。

17

内存分配请求失败

13

设定默认SSL加密失败

FTP 续传损坏。不能继续早些时候被中止的下载。

无效的LDAP URL

FTP 不能下载/访问给定的文件, RETR (或类似)命令失败。

SSL 连接错误。SSL 握手失败。

非法的TFTP 操作。

51

34

文件权限错误

接口错误。指定的外发接口无法使用。

47

服务器拒绝登录

无法关闭SSL连接

39

数据写入失败

53

67

57

本文由威尼斯www.9778.com发布于编程人生,转载请注明出处:CURL状态码列表(详细)

关键词:

领悟php接口中interface存在的意义

可能大家都懂这些,作为不懂的我猜测了一下这个interface的意义,他就是为了后面调用的时候再调用的方法中调用实...

详细>>

php删除字符串末尾子字符,删除开始字符,删除两端字符(实现代码

今天在处理删除字符串两端的特定字符时遇到了下面的问题,先看例子   $str = 'akmumu/writedb.json';  我要做的是删除开...

详细>>

Centos下安装memcacheq

memcacheQ是一个单纯的分布式消息队列服务。 一,MEMCACHEQ的应用背景 Web应用中为什 么会需要消息队列?主要原因是由...

详细>>

PHP中把有符号整型转换为无符号整型方法

在一个短地址项目中,根据六位字符与ID的相互映射的算法,当ID超过2147483647的时候,六位字符的短地址映射的ID变成...

详细>>