问题描述
本地使用 curl post json 数据经常出现超时,但是用postman没问题,换了一台机器也没问题。
问题出现的环境背景及自己尝试过哪些方法
php版本7.1.25
php curl 扩展信息如下
cURL support => enabled
cURL Information => 7.63.0
Age => 4
Features
AsynchDNS => Yes
CharConv => No
Debug => No
GSS-Negotiate => No
IDN => No
IPv6 => Yes
krb4 => No
Largefile => Yes
libz => Yes
NTLM => Yes
NTLMWB => Yes
SPNEGO => Yes
SSL => Yes
SSPI => No
TLS-SRP => Yes
HTTP2 => Yes
GSSAPI => Yes
KERBEROS5 => Yes
UNIX_SOCKETS => Yes
PSL => No
Protocols => dict, file, ftp, ftps, gopher, http, https, imap, imaps, ldap, ldaps, pop3, pop3s, rtsp, smb, smbs, smtp, smtps, telnet, tftp
Host => x86_64-apple-darwin18.2.0
SSL Version => OpenSSL/1.0.2q
ZLib Version => 1.2.11
相关代码
// 请把代码文本粘贴到下方(请勿用图片代替代码)
`
$cacert = getcwd() . '/cacert.pem'; //CA根证书
$SSL = substr($url, 0, 8) == "https://" ? true : false;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$header = array_merge(array("X-HTTP-Method-Override: $method",'Expect:'),$header);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_HEADER, 1);
if ($SSL && $CA) {
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); // 只信任CA颁布的证书
curl_setopt($ch, CURLOPT_CAINFO, $cacert); // CA根证书(用来验证的网站证书是否是CA颁布)
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, true); // 检查证书中是否设置域名,并且是否与提供的主机名匹配
} else if ($SSL && !$CA) {
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 信任任何证书
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,false); // 检查证书中是否设置域名
}
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$method = self::validate_method($method);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);
if ($data) {
$data = !is_array($data)?$data:http_build_query($data);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data); //data with URLEncode
}
$data = curl_exec($ch);
if (curl_errno($ch)) {
return curl_error($ch);
}
$ret = self::parse($ch,$data);
curl_close($ch);
return $ret;`
你期待的结果是什么?实际看到的错误信息又是什么?
想知道是不是哪个配置导致的。