我使用的代码是
$request = 'sales='.$_slots['sales']['value'].'&duration='.$_slots['duration']['value'];
$ch = curl_init();
curl_setopt( $ch,CURLOPT_URL, $url );
curl_setopt( $ch,CURLOPT_POST, 2 );
curl_setopt( $ch,CURLOPT_RETURNTRANSFER, true );
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,false);
curl_setopt( $ch,CURLOPT_SSL_VERIFYPEER, false );
curl_setopt( $ch,CURLOPT_POSTFIELDS, $request);
$result = curl_exec($ch );
$response = explode(chr(10),$result);
$data = implode('', $response);
$error = curl_error($ch)
curl_close( $ch );
curl_error
也返回 null
所以我无法追踪它为什么不工作。 $url
已在上面定义并且是一个有效的 url。我也尝试过不发送任何帖子,但它仍然不起作用。
任何建议将不胜感激。谢谢
最佳答案
在我的例子中,curl 只在 https URL 上显示这种行为,无论 CURLOPT_SSL_VERIFYHOST
和 CURLOPT_SSL_VERIFYPEER
是否设置为 false 进行测试,就像你在这里.
我最近运行了 yum update
更新了 Name Service Switch ,这是我能想到的对服务器的唯一更改。我在另一台服务器上通过 yum 进行了更新,该服务器开始在 curl 中显示相同的故障。
重新启动 Apache 服务解决了问题。重新启动后,Https URL 在 curl 中工作。
我确实找到了过去发生的 curl/ssl/nss 错误的示例,但在我的案例中从未看到错误消息。
- https://curl.haxx.se/mail/archive-2015-09/0019.html
- https://unix.stackexchange.com/questions/280548/curl-doesnt-connect-to-https-while-wget-does-nss-error-12286
- CURL (35) SSL connect error / NSS error -5961
这不是一个非常令人满意的解决方案,因为我觉得我没有全面了解为什么会发生此故障,因此我将继续调查并在发现更多问题时添加更新。
关于php - curl 返回空字符串,curl_error 也返回空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45299471/