【问题标题】:http\Client->enqueue(http\Client\Request)->send() resets connection to the server PHPhttp\Client->enqueue(http\Client\Request)->send() 重置与服务器 PHP 的连接
【发布时间】:2015-11-30 08:01:53
【问题描述】:

我刚刚在我的服务器上安装了模块 pecl_http 2.5.1,我正在尝试从以下 php 脚本向我网站的另一个端口(需要 https)发送一个获取请求:

if(!isset($_POST['user']) || !isset($_POST['pass']) || $_POST['user']=="" || $_POST['pass']=="")
{   
    header("Location:https://MY_IP:444/");
    exit;
}

require_once("contants.php");
//Usar información de Login contra el servicio REST
$request = new http\Client\Request("GET", SERVICE_URL."/login", ["Auth" => $_POST['user'].":".$_POST['pass']]);
$request->setOptions(["timeout"=>1]);
$client = new http\Client;
$client->enqueue($request)->send();
//$response=$client->getResponse();
//echo $response->getResponseCode();

到此端口的用户连接和与我尝试通过 SERVICE_URL 联系的端口的服务器连接都需要 https。但是当我尝试将表单发送到此页面时,我的浏览器会输出“重置连接”错误,并拒绝继续,因为它认为它不安全。

为什么会这样? PHP 不能保持一个以上的套接字打开,因此它必须关闭一个才能打开另一个?我该如何解决这个问题?

【问题讨论】:

  • 另一台服务器真的在 444 端口上运行吗?默认 https 端口是 443。如果这是正确的,可能是如果您的服务器使用自签名 ssl 证书,您的 php 客户端可能会拒绝它。
  • 是的,服务器在 444 上运行。其他服务 SERVICE_URL 使用的端口是 443。不过,我检查了 apache 日志,php 解释器似乎有分段错误,这导致了我认为 php 模块有错误。我要测试旧版本的模块。

标签: php apache


【解决方案1】:

刚刚检查过。显然 pecl_http 扩展模块的 2.5.1 版本有一个错误。这在 2.5.0 版上运行良好。我让开发者知道。

【讨论】:

  • 开发人员说他无法重现该问题,但这是我让它在我的系统上运行的唯一方法。
猜你喜欢
  • 1970-01-01
  • 2012-03-25
  • 1970-01-01
  • 2016-06-18
  • 1970-01-01
  • 2011-08-05
  • 2016-04-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多