【问题标题】:Curl returns a null string and curl_error also returns nullcurl 返回一个空字符串,curl_error 也返回 null
【发布时间】:2017-07-25 09:39:49
【问题描述】:

我使用的代码是

            $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_error() 代码在哪里?还有你的网址是什么?
  • 也是你的$request变量正确的URL编码,有一个函数http_build_query()用于那个
  • 我使用了 curl_error 但我删除了它,因为它返回 null
  • 我也尝试删除所有帖子,但仍然没有成功
  • @Peter 是的。我附和它并检查了

标签: php curl


【解决方案1】:

就我而言,curl 仅在 https URL 上显示此行为,无论 CURLOPT_SSL_VERIFYHOSTCURLOPT_SSL_VERIFYPEER 是否设置为 false 以进行测试,就像您在这里一样。

我最近运行了一个yum update,它更新了Name Service Switch,这是我能想到的对服务器的唯一更改。我在另一台服务器上通过 yum 更新,该服务器开始在 curl 中显示相同的故障。

重新启动 Apache 服务解决了该问题。 Https URL 在此重新启动后在 curl 中工作。

我确实发现了过去发生的 curl/ssl/nss 错误示例,但在我的情况下从未看到错误消息。

这不是一个非常令人满意的解决方案,因为我不知道为什么会发生此故障,因此如果我发现更多内容,我将继续调查并添加更新。

【讨论】:

  • @SaeeshTendulkar 关键是,更新导致 Apache 出现问题,需要在应用更新后重新启动它。你的决定是什么?
猜你喜欢
  • 2015-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-29
  • 2011-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多