【发布时间】:2011-06-10 20:01:37
【问题描述】:
所以我试图让 openssl 在我的 Windows 安装 xampp(1.7.3) 上工作,它是用 OpenSSL 0.9.8l 构建的。这只是我第二次在 *amp 安装上安装 openssl,但第一次顺利进行(这是在同一台机器上安装 wamp,但我发现 xampp 更符合我的风格,所以我切换了)。
当我尝试一个简单的设置脚本时:
var_dump(getenv('OPENSSL_CONF'));
$privateKey = openssl_pkey_new();
while($message = openssl_error_string()){
echo $message.'<br />'.PHP_EOL;
}
我收到一条返回消息:
error:02001003:system library:fopen:No such process
error:2006D080:BIO routines:BIO_new_file:no such file
error:0E064002:configuration file routines:CONF_load:system lib
我阅读了 php.net 页面,该页面告诉我需要设置 openssl.cnf 和 ssleay.dll 环境常量的可能性,我尝试了,但没有任何改变。
OPENSSL_CONF 中的var_dump 导致路径:C:/xampp/apache/bin/openssl.cnf,这对我的机器是正确的。
我检查了 php 目录的路径(ssleay32.dll 和 libeay32.dll 所在的位置)是在我的路径系统 var 中定义的,但它不是,所以我定义了它,重新启动了我的机器,并且在这个过程中重新启动 apache,但错误消息没有变化。
我的 xampp 版本没有附带 php_openssl.dll,因此我相信 php.ini 文档应该将其从可用 .dll 列表中排除,就像我检查时所做的那样。我相信 xampp 会使用基于 zend 的扩展进行编译。
我能够从 xampp gui 启动 openssl,并且我成功地创建了一个私钥/公钥对。
phpinfo() 报告:
openssl OpenSSL 支持启用
OpenSSL 库版本 OpenSSL
0.9.8l 2009 年 11 月 5 日 OpenSSL 标头版本 OpenSSL 0.9.8l 2009 年 11 月 5 日
我认为我的系统目录中存在来自 wamp 安装的旧 ssleay.dll 和 libeay32.dll,但此后我已将其删除。 (之后重新启动,并重新启动 apache)
我尝试将openssl.cnf复制到默认目录'C:\usr\local\ssl\openssl.cnf'没有变化。
我还阅读了this 线程和this 线程,但给出的答案是相关的,但没有帮助或不存在。
有人对我接下来应该检查的内容或我遗漏的任何明显内容有任何想法吗?
【问题讨论】:
-
它有趣的
OPENSSL_CONF是C:/xampp/apache/bin/openssl.cnf,配置得很好。唯一的小问题是 Windows 使用反斜杠,而不是正斜杠。