PHP openssl_public_encrypt 导致页面超时/连接重置?
Posted
技术标签:
【中文标题】PHP openssl_public_encrypt 导致页面超时/连接重置?【英文标题】:PHP openssl_public_encrypt causing Page Timeout/Connection Reset? 【发布时间】:2012-01-15 11:09:43 【问题描述】:刚迁移到新机器并遇到问题。
注意:这是 Windows 7、Apache 2.2.21、MySQL 5.5.16、php 5.3.8 设置。
每次我运行某个 php 脚本时,都会遇到“页面加载错误 - 连接已重置”。我知道脚本在使用各种 echo 语句调用函数之前工作,但调用:
openssl_public_encrypt();
给我一个页面超时。我已将适当的 openssl.dll PATH 添加到我的 Windows 配置设置(D:\xampp\php\etc),但在我的实际 localhost 机器上仍然出现页面超时错误(以及上述错误)。
页面返回:
连接已重置
在加载页面时重置了与服务器的连接。
apache ssl 日志显示:
[Wed Dec 07 15:13:17 2011] [info] 加载 SSL 感知服务器的证书和私钥
[2011 年 12 月 7 日星期三 15:13:17] [调试] ssl_engine_pphrase.c(470):未加密的 RSA 私钥 - 不需要密码
[Wed Dec 07 15:13:17 2011] [info] 为 SSL 协议配置服务器
[2011 年 12 月 7 日星期三 15:13:17] [debug] ssl_engine_init.c(465):创建新的 SSL 上下文(协议:SSLv2、SSLv3、TLSv1)
[Wed Dec 07 15:13:17 2011] [debug] ssl_engine_init.c(420):配置 TLS 扩展处理
[2011 年 12 月 7 日星期三 15:13:17] [调试] ssl_engine_init.c(795):配置 RSA 服务器证书
[2011 年 12 月 7 日星期三 15:13:17] [警告] RSA 服务器证书 CommonName (CN) `localhost' 与服务器名称不匹配!?
[Wed Dec 07 15:13:17 2011] [debug] ssl_engine_init.c(834):配置 RSA 服务器私钥
PHPinfo() 显示:
**
openssl
**
OpenSSL support | enabled
----------------------------------------------------------
OpenSSL Library Version | OpenSSL 1.0.0e 6 Sep 2011
----------------------------------------------------------
OpenSSL Header Version | OpenSSL 0.9.8r 8 Feb 2011
-
我的库和标头版本不应该匹配吗?这可能是我的错误的原因吗?
【问题讨论】:
【参考方案1】:值得注意的是,这是在最新版本的 apache 和 php 中发现的错误。 Apache 版本使用了不兼容的文件。要解决(暂时仅在本地机器上):
替换 xampp/apache/bin 文件夹中的以下两个文件:
libeay32.dll ssleay32.dll在您的 xampp/php 文件夹中使用同名文件。我立即解决了这个问题。
【讨论】:
【参考方案2】:看看这个日志条目:
[warn] RSA 服务器证书 CommonName (CN) `localhost' 不 匹配服务器名称!?
如果你通过它的公共名称而不是本地主机访问机器,你仍然有同样的错误吗?
【讨论】:
好点,但在我的旧机器上使用“相同”设置时没有同样的问题。我已经创建了几个虚拟主机配置,所以我通过someurl 而不是localhost/some_foldername 直接访问我的站点。这会警告错误(此站点的证书不匹配,等等),但它不应该完全停止该过程。如您所见,无论如何,它似乎仍在继续。 我会做笔记,这是一个在 Windows 7 机器 WAMP 设置下本地运行的开发服务器。以上是关于PHP openssl_public_encrypt 导致页面超时/连接重置?的主要内容,如果未能解决你的问题,请参考以下文章
IntelliJ IDEA 11编辑php是,支持php文件名为.php5和.php4,如何设置能让其也支持.php呢?