【发布时间】:2021-03-08 15:20:41
【问题描述】:
我正在从本地主机和生产服务器运行下一个脚本,并且得到不同的输出。任何人都知道为什么我会从本地主机获得false?
<?php
$host = 'ssl://mail.companyname.org';
$port = 993;
$error = 0;
$errorString = "";
var_dump(fsockopen($host, $port, $error, $errorString, 30));
var_dump($errorString);
var_dump($error);
本地主机输出:
布尔(假)
生产服务器输出:
类型(流)的资源(4)
更新:在 cmets/answer 之后我修改了代码,现在我在本地主机上得到了这个输出:
PHP 警告:fsockopen():SSL 操作失败,代码为 1。OpenSSL 错误消息:错误:1416F086:SSL 例程:tls_process_server_certificate:证书验证失败 /tmp/test.php 在第 7 行 PHP 警告:fsockopen():启用失败 第 7 行 /tmp/test.php 中的加密 PHP 警告:fsockopen():无法 连接到 /tmp/test.php 中的 ssl://mail.twmdata.org:993(未知错误) 在第 7 行 bool(false) string(0) "" int(0)
【问题讨论】:
-
看起来您的本地服务器不允许在服务端使用。检查防火墙和其他配置
-
可能在这里说明了明显的情况,但
$errorString可能包含一些有用的信息。你没有提到任何关于它的事情。它说什么? -
@RoAchterberg
$errorString为空。 -
"certificate verify failed" 正如@brensnap 已经指出的那样,您没有在本地主机上正确配置OpenSSL settings。查看生产服务器上的 php.ini 文件。
-
有什么更新吗?需要帮助吗?您的 SSL 证书已于 4 天前过期。