Php 在XAMPP中启用OpenSSL
我花了三个小时,但什么也没找到;我无法连接到启用SSL的服务器。我想列出我做了什么: 首先检查我的PHP扩展目录是否有序;扩展不存在,php\u openssl.dll 然后我打开了我的php.ini文件,但我没有看到任何要取消注释的扩展名=php\u openssl.dll行 另外,我在谷歌上搜索,发现有人有同样的问题。 不过,我也有Php 在XAMPP中启用OpenSSL,php,ssl,xampp,Php,Ssl,Xampp,我花了三个小时,但什么也没找到;我无法连接到启用SSL的服务器。我想列出我做了什么: 首先检查我的PHP扩展目录是否有序;扩展不存在,php\u openssl.dll 然后我打开了我的php.ini文件,但我没有看到任何要取消注释的扩展名=php\u openssl.dll行 另外,我在谷歌上搜索,发现有人有同样的问题。 不过,我也有 OPENSSL_CONF C:/xampp/apache/bin/openssl.cnf ... openssl OpenSSL support enabl
OPENSSL_CONF C:/xampp/apache/bin/openssl.cnf
...
openssl
OpenSSL support enabled
OpenSSL Library Version OpenSSL 0.9.8l 5 Nov 2009
OpenSSL Header Version OpenSSL 0.9.8l 5 Nov 2009
没有台词。我该怎么办?请分享你的建议
[PHP_OPENSSL]
extension=php_openssl.dll
这就是答案。是的,您必须打开
php.ini
并删除分号:
;extension=php_openssl.dll
如果您没有该行,请检查您是否有该文件(在我的电脑中位于D:\xampp\php\ext
),并将其添加到“动态扩展”部分的php.ini
:
我使用xampp。之前,我在phpMailer中尝试了示例文件“test_smtp_gmail_basic.php”(您可以在此处下载phpMailer:),但我遇到了以下错误: 邮件程序错误:以下发件人地址失败:xxx@gmail.com 在我注释掉
之后;在php.ini中,extension=php_openssl.dll
正在工作。在xampp中,如果php.ini文件中没有“extension=php_openssl.dll”,请将其添加到php.ini文件的“Windows扩展名”部分
然后重新启动apache。
它对我有用 您需要编辑php.ini。这是4个简单的步骤 查找php.ini文件
$inipath = php_ini_loaded_file();
在文件中启用openssl:
extension=php_openssl.dll
打开“允许url打开”
allow_url_fopen = On
重新启动apache,您就完成了 步骤1:在你的
php.ini上
注释掉;extension=php_openssl.dll
步骤2:从PHP根文件夹复制libeay32.dll和ssleay32.dll,并将其粘贴到Apache/bin文件夹
步骤3:重新启动ApachePHP>7的情况发生了变化。这就是我必须为PHP7.2做的事情 步骤:1:取消注释
extension=openssl
步骤:2:取消注释扩展名\u dir=“ext”
步骤:3:重新启动xampp
完成。
解释:(来自php.ini)
如果希望自动加载扩展,请使用以下语法:
extension=modulename
注意:以前的PHP版本(extension=.so
和extension=.PHP_uuk;.dll
)中使用的语法由于遗留原因而受到支持,在未来的PHP主版本中可能会被弃用。因此,如果可能,请转到新的(扩展=
)语法
特别注意:确保正确设置
扩展目录
指令。我假设这个问题适用于使用基于windows系统的用户
确保php.ini文件中的扩展名=php_openssl.dll没有分号后
然后确保您已将C:/xampp/apache/bin添加到环境路径中,以便使用openssl,而无需将命令提示符移动到该目录C:/xampp/apache/bin那么,我们如何使
openssl\u pkey\u new()
和PHP中的所有其他openssl\u
函数工作
- 在(右/活动)
中启用扩展名php.ini
。检查过了php\u openssl.dll
- 检查
中是否存在xampp\apache\conf\
(以及xampp中的两个其他目录)。检查过了openssl.cnf
- 在Windows系统设置中添加了环境变量
,其中包含上述OPENSSL\u CONF
的完整路径。检查过了OPENSSL.cnf
- 重新启动Apache(之后无法工作,多次重新启动计算机…)。检查过了
- 错误:0E06D06C:配置文件例程:NCONF_get_字符串:无值
- 错误:020001002:系统库:fopen:没有此类文件或目录
- 错误:2006D080:BIO例程:BIO_新文件:无此类文件
好的,这里还有两件事要检查 1。环境问题 从PHP脚本运行
phpinfo()
,然后转到“Apache环境”部分。检查OPENSSL\u CONF
的值
惊喜。这不是我们在windows系统设置中设置的
解决办法很简单。在PHP脚本中设置环境变量
putenv('OPENSSL_CONF=C:\xampp\apache\conf\openssl.cnf');
2。相对文件名有问题
现在,openssl\u pkey\u new()
可以工作了,但是openssl\u pkey\u export\u to\u file()
仍然不工作,并且返回false
,没有任何进一步的解释
检查指定为输出文件名的文件名。只要不指定完整路径,它就不会在Windows中工作
$folder = realpath('../keyring');
$outfile = $folder.'/private.pem';
openssl_pkey_export_to_file($key, $outfile);
虽然与这个问题无关,但由于WP migrate Pro docs链接到这个问题,我想我会在这里发布一个答案 如果您在DB Migrate Pro激活而不是启用SSL时遇到问题,您只需在wp配置中添加一行代码即可
定义('WPMDB_许可证','XXXXXXXXXX X')代码>请将@Memochipan标记为答案您可能还需要取消php.ini中的'extension_dir=“ext”'注释,并相应地设置路径。感谢您在上面的评论。我想我在某个时候改变了它。。。我想是吧。无论如何,谢谢。php.ini文件通常位于xampp/php/php.ini中。它不是php\u info()
,而是phpinfo()
。只需将这一行添加到Apache httpd.conf文件中SetEnv OPENSSL_CONF C:/xampp/apache/CONF/OPENSSL.cnf
$folder = realpath('../keyring');
$outfile = $folder.'/private.pem';
openssl_pkey_export_to_file($key, $outfile);