【发布时间】: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 模块有错误。我要测试旧版本的模块。