一、以下是创蓝发送短信的功能,可以直接执行:
<?php$phone = '12312312312';$msg = '测试短信功能';echo '发送手机号:'.$phone.'<br/>';echo '发送内容:'.$msg.'<br/>';$send = sendMessage($phone, $msg);var_dump($send);/*** 发送短信** @param string $mobile 手机号码* @param string $msg 短信内容* @param string $needstatus 是否需要状态报告*/function sendMessage($mobile, $msg, $needstatus = 'true'){//创蓝接口参数$postArr = array ('account' => "自己的创蓝",'password' => "自己的创蓝密码",'msg' => urlencode($msg),'phone' => $mobile,'report' => $needstatus);$result = httpCurl("https://smssh1.253.com/msg/send/json", $postArr);return json_decode($result);}/*** http请求** @param $url //请求地址* @param $params //链接后拼接的参数数组* @param $method //get/post* @param $header //请求头数组*/function httpCurl($url, $params, $method = 'POST', $header = array("Content-type:text/html; charset=UTF-8"), $multi = false){$params = json_encode($params);echo '发送接口参数:'.$params;// 初始化cURL会话$ch = curl_init();// 设置cURL选项curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);curl_setopt($ch, CURLOPT_HTTPHEADER, $header);curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);if ($method == 'POST' && !empty($params)) {curl_setopt($ch, CURLOPT_POSTFIELDS, $params);}if ($multi) {curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);curl_setopt($ch, CURLOPT_TIMEOUT, 10);}// 执行cURL会话并获取响应$response = curl_exec($ch);echo '接收发送结果:'.$response.'<br/>';// 检查是否有错误发生if (curl_errno($ch)) {echo 'cURL 错误: ' . curl_errno($ch). curl_error($ch);} else {// 处理响应结果return $response;}// 关闭cURL会话curl_close($ch);}?>
二、下面附上curl_erron()的错误码的意思:
libcurl - Error Codes
每一个错误码都可以找到相对应的错误信息,有时候用着用着不能用了,或者错误信息返回null的时候,重启php试试,一般是因为服务更新了相关的软件包产生的问题。
重启命令:service php-fpm restart
三、错误码信息内容:
CURLE _ OK(0)
一切都好。照常进行。
CURLE _ UNSUPPORTED _ PROTOCOL(1)
您传递给libcurl的URL使用了该libcurl不支持的协议。支持可能是您没有使用的编译时选项,可能是拼写错误的协议字符串或只是libcurl没有代码的协议。
早期初始化代码失败。这可能是一个内部错误或问题,或者是一个资源问题,在初始化时无法完成一些基本工作。
URL格式不正确。
由于构建时的决定,在此libcurl中找不到内置的请求功能、协议或选项。这意味着在构建libcurl时没有启用或显式禁用某个特性或选项,为了让它正常工作,您必须重新构建libcurl。
CURLE _ could nt _ RESOLVE _ PROXY(5)
无法解析代理。无法解析给定的代理主机。
CURLE _ could nt _ RESOLVE _ HOST(6)
无法解析主机。未解析给定的远程主机。
无法将()连接到主机或代理。
libcurl无法解析服务器发送的数据。该错误代码被称为卷发_ FTP _怪异_服务器_回复7.51.0之前。
CURLE _ REMOTE _ ACCESS _ DENIED(9)
我们被拒绝访问URL中给定的资源。对于FTP,在尝试更改到远程目录时会出现这种情况。
CURLE _ FTP _ ACCEPT _ FAILED(10)
当使用活动FTP会话等待服务器连接时,通过控制连接或类似方式发送了错误代码。
CURLE_FTP_WEIRD_PASS_REPLY (11)
将FTP密码发送到服务器后,libcurl希望得到正确的回复。此错误代码表示返回了意外代码。
CURLE _ FTP _ ACCEPT _ time out(12)
在等待服务器连接的活动FTP会话期间CURLOPT_ACCEPTTIMEOUT_MS(或内部默认值)超时已过期。
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)
查找用于新连接的主机时出现内部故障。
在HTTP2帧层中检测到问题。这是一个普通的问题,可能是几个问题中的一个。有关详细信息,请参见错误缓冲区。
CURLE _ FTP _ could nt _ SET _ TYPE(17)
尝试将传输模式设置为二进制或ASCII时收到错误。
文件传输比预期的时间短或大。当服务器首先报告预期的传输大小,然后交付与先前给定大小不匹配的数据时,就会发生这种情况。
CURLE_FTP_COULDNT_RETR_FILE (19)
这要么是对“RETR”命令的奇怪回复,要么是零字节传输完成。
不用于现代版本。
当向远程服务器发送自定义“QUOTE”命令时,其中一个命令返回400或更高的错误代码(对于FTP ),或者指示命令未成功完成。
CURLE_HTTP_RETURNED_ERROR (22)
如果出现以下情况,则返回CURLOPT_FAILONERROR设置为真,HTTP服务器返回大于等于400的错误代码。
将收到的数据写入本地文件时出错,或者从写回调中将错误返回到libcurl。
Obsolete error (24)
不用于现代版本。
开始上传失败。对于FTP,服务器通常会拒绝STOR命令。错误缓冲区通常包含服务器对此的解释。
读取本地文件时出现问题,或者读取回调返回了错误。
内存分配请求失败。这是非常糟糕的事情,如果发生这种情况,事情会变得非常糟糕。
操作超时。根据条件,已达到指定的超时期限。
Obsolete error (29)
不用于现代版本。
FTP端口命令返回错误。这通常发生在您没有为libcurl指定足够好的地址时。看见CURLOPT_FTPPORT.
CURLE_FTP_COULDNT_USE_REST (31)
FTP REST命令返回错误。如果服务器正常,这种情况应该不会发生。
Obsolete error (32)
不用于现代版本。
服务器不支持或不接受范围请求。
这是一个奇怪的错误,主要是由于内部混乱造成的。
SSL/TLS握手中出现问题。您真的需要错误缓冲区,并在那里阅读消息,因为它稍微指出了问题。可能是证书(文件格式、路径、权限)、密码等。
CURLE_BAD_DOWNLOAD_RESUME (36)
无法继续下载,因为指定的偏移量超出了文件边界。
CURLE _ FILE _ could nt _ READ _ FILE(37)
无法打开使用FILE://给定的文件。很可能是因为文件路径无法识别现有文件。你检查文件权限了吗?
LDAP无法绑定。LDAP绑定操作失败。
LDAP搜索失败。
Obsolete error (40)
不用于现代版本。
找不到函数。找不到所需的zlib函数。
CURLE_ABORTED_BY_CALLBACK (42)
被回调中止。回调向libcurl返回了“abort”。
CURLE_BAD_FUNCTION_ARGUMENT (43)
用错误的参数调用了函数。
Obsolete error (44)
不用于现代版本。
接口错误。无法使用指定的传出接口。设置哪个接口用于传出连接的源IP地址CURLOPT_INTERFACE.
Obsolete error (46)
不用于现代版本。
太多重定向。当跟随重定向时,libcurl达到最大数量。用...设定您的限制CURLOPT_MAXREDIRS.
传递给libcurl的选项不可识别/未知。请参考相应的文档。这很可能是使用libcurl的程序中的问题。错误缓冲区可能包含有关哪个选项的更具体的信息。
CURLE_SETOPT_OPTION_SYNTAX (49)
传递给setopt的选项格式错误。有关选项的详细信息,请参见错误消息。
Obsolete errors (50-51)
不用于现代版本。
服务器没有返回任何东西,在这种情况下,什么也没有得到被认为是一个错误。
CURLE_SSL_ENGINE_NOTFOUND (53)
找不到指定的加密引擎。
CURLE_SSL_ENGINE_SETFAILED (54)
将选定的SSL加密引擎设置为默认引擎失败。
发送网络数据失败。
接收网络数据失败。
Obsolete error (57)
不用于现代版本。
本地客户端证书有问题。
无法使用指定的密码。
CURLE_PEER_FAILED_VERIFICATION (60)
远程服务器的SSL证书或SSH指纹被认为不正确。自7.62.0起,此错误代码已与CURLE_SSL_CACERT统一。其前值为51。
CURLE_BAD_CONTENT_ENCODING (61)
无法识别的传输编码。
Obsolete error (62)
不用于现代版本。
超过了最大文件大小。
CURLE _ USE _ SSL _ FAILED(64)
请求的FTP SSL级别失败。
在执行发送操作时,curl必须倒带数据以重新传输,但倒带操作失败。
CURLE _ SSL _ ENGINE _ init failed(66)
启动SSL引擎失败。
远程服务器拒绝curl登录(在7.13.1中添加)
在TFTP服务器上找不到文件。
TFTP服务器上的权限问题。
服务器上的磁盘空间不足。
非法TFTP行动。
未知的TFTP转账ID。
CURLE _ REMOTE _ FILE _ EXISTS(73)
文件已经存在且未被覆盖。
正常运行的TFTP服务器不应返回此错误。
Obsolete error (75-76)
不用于现代版本。
CURLE _ SSL _ CACERT _ BADFILE(77)
读取SSL CA证书时出现问题(路径?访问权限?)
CURLE _ REMOTE _ FILE _ NOT _ FOUND(78)
URL中引用的资源不存在。
SSH会话期间出现未指定的错误。
CURLE _ SSL _ shut down _ FAILED(80)
无法关闭SSL连接。
套接字未准备好发送/接收。等待它准备好,然后重试。此返回代码仅从返回curl_easy_recv和卷曲_轻松_发送(在7.18.2中添加)
CURLE _ SSL _ CRL _ BADFILE(82)
无法加载CRL文件(在7.19.0中添加)
CURLE _ SSL _ ISSUER _ ERROR(83)
发行者检查失败(在7.19.0中添加)
CURLE _ FTP _ PRET _ FAILED(84)
FTP服务器根本不理解PRET命令或不支持给定的参数。使用时要小心CURLOPT_CUSTOMREQUEST,自定义列表命令也在PASV之前与PRET命令一起发送。(在7.20.0中添加)
RTSP CSeq数不匹配。
RTSP会话标识符不匹配。
无法解析FTP文件列表(在FTP通配符下载期间)。
区块回调报告了错误。
CURLE _ NO _ CONNECTION _ AVAILABLE(89)
(仅供内部使用,libcurl从不返回)没有连接可用,会话排队。(在7.30.0中添加)
CURLE _ SSL _ PINNEDPUBKEYNOTMATCH(90)
无法匹配用指定的固定密钥CURLOPT_PINNEDPUBLICKEY.
CURLE _ SSL _ INVALIDCERTSTATUS(91)
询问时,状态返回失败CURLOPT_SSL_VERIFYSTATUS.
HTTP/2帧层中的流错误。
CURLE _ RECURSIVE _ API _ CALL(93)
从回调内部调用了API函数。
身份验证函数返回错误。
在HTTP/3层检测到一个问题。这是一个普通的问题,可能是几个问题中的一个。有关详细信息,请参见错误缓冲区。
QUIC连接错误。此错误可能是由SSL库错误引起的。QUIC是用于HTTP/3传输的协议。
代理握手错误。CURLINFO_PROXY_ERROR提供特定问题的额外详细信息。
需要SSL客户端证书。
对poll()或select()的内部调用返回了不可恢复的错误。
值或数据字段变得比允许的大。
ECH尝试过,但失败了。