为啥 openssl_pkey_new() 失败?
Posted
技术标签:
【中文标题】为啥 openssl_pkey_new() 失败?【英文标题】:Why does openssl_pkey_new() fail?为什么 openssl_pkey_new() 失败? 【发布时间】:2011-05-16 00:19:54 【问题描述】:我对此很陌生。为什么openssl_pkey_new()
返回 false?
我正在使用 XAMPP,Apahce\bin
目录下有一个 OpenSSL。
我犯了什么明显的初学者错误?也许这是 SSL 配置的问题?
我的目标是将两个密钥写入两个文件。
更新:按照建议,我使用了openssl_error_string()
,上面写着error:02001003:system library:fopen:No such process
。听起来可能 OpenSSL 没有运行或不在路径中?有什么想法吗?
更新:我把c:\xampp\php
放到windows路径下,让它能找到libeay32.dll
,然后重启Apache。
现在我得到error:2006D080:BIO routines:BIO_new_file:no such file
。有什么想法吗?
【问题讨论】:
一些基本检查 - php.net/manual/en/openssl.installation.php ***.com/questions/15558321/… 可能重复:OpenSSL and error in reading openssl.conf file 和 Xampp openssl errors when calling openssl_pkey_new()。 【参考方案1】:使用 openssl_error_string()
找出为什么 openssl_pkey_new()
返回 false(或任何其他 OpenSSL 错误)。
在您的最新更新之后,OpenSSL 似乎找不到 openssl.cnf
文件,如 described here。
【讨论】:
【参考方案2】:对我来说,在 Windows 10 上使用 XAMPP 可以:
-
https://***.com/a/18869750/4695499。 (您可以在 Windows 10 的旧控制面板中的任一显示选项下找到这些步骤)
我还尝试在 php.ini 中取消注释
extension=php_openssl.dll
(但我的意思是没有它也可以工作)
我重新启动计算机和 Apache,然后 openssl_pkey_new()
生成了一些 RESOURCE
而不是 false
【讨论】:
谢谢,星。 15 年或更长时间后,我终于放弃了 Xampp,安装了 Apache、PHP 和 mysql。出乎意料地容易做到,最后,我觉得自己很专业;-)自从我问这个问题以来已经 11 年了,我什至不记得它,更不用说重现它了,但是感谢您发布您的答案。我希望它对将来在这里发帖的其他人有所帮助(upvote)以上是关于为啥 openssl_pkey_new() 失败?的主要内容,如果未能解决你的问题,请参考以下文章
writeToFile 失败 - 我如何调试它为啥失败(啥工具)?