【问题标题】:Curl hangs my apache server when doing POST to https对 https 进行 POST 时,Curl 会挂起我的 apache 服务器
【发布时间】:2014-03-09 23:51:58
【问题描述】:

curl 有一个非常奇怪的问题,当我向我的 ubuntu apache 服务器发出 post 请求时,apache 服务器挂起,如果我调试我的 php 代码,我可以看到

$fp = curl_exec($ch);

永远不会回来。我认为实际的 post 请求是正确的,因为我可以使用 postman 成功地执行相同的 POST 请求。

以下是我的 curl 选项:

$ch = curl_init();
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER , 0);
curl_setopt($ch,CURLOPT_URL, $this->url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch,CURLOPT_POST,true);
curl_setopt($ch,CURLOPT_HTTPHEADER,$testHeader);
curl_setopt($ch,CURLOPT_POSTFIELDS,$post_data);
$fp = curl_exec($ch);

一个奇怪的事情是,如果我很快,并重新加载我的 apache 服务器

sudo service apache reload

当它处于挂起状态时,curl_exec 立即返回,我得到了我的数据。我不是一个真正的 Web 开发人员,更多的是一个 Windows 人,所以任何帮助都将不胜感激。 :)

更新 由于进程挂起,我看不到来自 Curl 的错误报告。它从来没有达到可以给我错误的地步。当我重新加载 apache 服务器时,请求返回,然后没有报告错误。我添加了 CURLOPT_VERBOSE 选项。

更新 2: 好的,我还可以从主机和客户端的 curl 命令行运行帖子。值得一提的是,我的主机是虚拟机。开始认为它更像是一种网络事物。

【问题讨论】:

  • CURLOPT_VERBOSE 告诉你什么?

标签: php apache ubuntu curl


【解决方案1】:

好的,我终于在这个帖子的帮助下解决了这个愚蠢的错误

PHP curl exec fail on php script same domain

解决方案是添加:

session_write_close();

在 curl_exec 之前

然后

session_start();

之后。我希望我可以在这里写它来帮助某人。

【讨论】:

  • 谢谢!!!我花了几个小时试图解决这个问题。这立即解决了问题。
猜你喜欢
  • 2015-10-25
  • 1970-01-01
  • 2015-11-11
  • 2015-09-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多