在XAMPP中启用OpenSSL

时间:2012-02-27 13:49:47

标签: php ssl xampp

我花了三个小时但没找到任何东西;我无法连接到启用SSL的服务器。我想列出我的所作所为:

首先检查我的PHP扩展目录是否正常;扩展名不存在, php_openssl.dll

然后我打开了我的 php.ini 文件,但我看不到任何 extension = php_openssl.dll 行要取消注释。

此外,我在谷歌搜索并看到有同样问题的人。 http://www.apachefriends.org/f/viewtopic.php?p=162623

但是,我也有

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

没有线条。我该怎么办?请分享您的建议。

10 个答案:

答案 0 :(得分:103)

是的,您必须打开php.ini并将分号删除为:

;extension=php_openssl.dll

如果您没有该行,请检查您是否拥有该文件(在我的电脑上D:\xampp\php\ext)并将其添加到“动态扩展程序”部分中的php.ini

extension=php_openssl.dll

答案 1 :(得分:7)

[PHP_OPENSSL]
extension=php_openssl.dll

这就是答案。

答案 2 :(得分:2)

在xampp中,如果你的php.ini文件中没有“extension = php_openssl.dll”,那么将它添加到php.ini文件的“Windows Extensions”部分 并重新启动您的Apache。 它对我有用..

答案 3 :(得分:1)

我使用xampp。之前我在phpMailer中尝试了示例文件“test_smtp_gmail_basic.php”(你可以在这里下载phpMailer:https://github.com/Synchro/PHPMailer),但是我收到了以下错误:

邮件程序错误:以下发件人地址失败:xxx@gmail.com

在php.ini中注释掉; extension=php_openssl.dll后,它现在正在运行。

答案 4 :(得分:1)

您需要编辑php.ini。这是4个简单的步骤。

找到你的php.ini文件。

$inipath = php_ini_loaded_file();

在文件中启用openssl:

extension=php_openssl.dll 

打开

上的allow_url_fopen
allow_url_fopen = On

重启apache,你就完成了!

答案 5 :(得分:1)

因此,我们做了什么工作才能使PHP中的openssl_pkey_new()和所有其他openssl_函数正常工作……

  • 在(正确/有效)php_openssl.dll中启用了扩展名php.ini。已检查。
  • 检查openssl.cnf(以及XAMPP中的其他两个目录)中是否存在xampp\apache\conf\。已检查。
  • 在Windows系统设置中添加了具有以上OPENSSL_CONF的完整路径的环境变量openssl.cnf。已检查。
  • 重新启动Apache(之后无法正常工作,则多次重新启动计算机...)。已检查。

仍然不起作用,并抛出诸如

的错误
  • 错误:0E06D06C:配置文件例程:NCONF_get_string:无值
  • 错误:02001002:系统库:fopen:没有此类文件或目录
  • 错误:2006D080:BIO例程:BIO_new_file:没有此类文件

好的,这还有另外两件事要检查。

1。环境问题

从PHP脚本运行php_info(),然后转到“ Apache Environment”部分。检查OPENSSL_CONF的值。

惊奇。这不是我们在Windows系统设置中设置的。

解决方案很简单。在PHP脚本中设置环境变量。

putenv('OPENSSL_CONF=C:\xampp\apache\conf\openssl.cnf');

2。相对文件名有问题

现在,openssl_pkey_new()可以工作了,但是openssl_pkey_export_to_file()仍然不能工作,并且返回false时没有任何进一步的解释?

检查已指定为输出文件名的文件名。只要您不指定完整路径,它就无法在Windows中工作。

$folder = realpath('../keyring');
$outfile = $folder.'/private.pem';
openssl_pkey_export_to_file($key, $outfile);

答案 6 :(得分:0)

步骤1:在您的php.ini上注释掉;extension=php_openssl.dll

第2步:从PHP根文件夹复制libeay32.dll和ssleay32.dll并将其粘贴到您的Apache / bin文件夹

第3步:重新启动Apache

答案 7 :(得分:0)

PHP> 7发生了变化。这是我对PHP 7.2所做的事情。

步骤:1:取消注释extension=openssl

步骤:2:取消注释extension_dir = "ext"

步骤:3:重新启动xampp。

完成。

说明:(来自php.ini)

如果您希望自动加载扩展程序,请使用以下语法:

extension=modulename

注意:出于遗留原因,支持以前的PHP版本(extension=<ext>.soextension='php_<ext>.dll)中使用的语法,并且在以后的PHP主版本中可能会弃用该语法。因此,请尽可能使用新的(extension=<ext>)语法。

特殊说明:请确保正确设置extension_dir指令。

答案 8 :(得分:0)

我假设这个问题是针对使用基于Windows的系统的人的。

确保您的php.ini文件中的扩展名为extension = php_openssl.dll没有分号。

然后确保已将C:/ xampp / apache / bin添加到您的环境路径中,以便在不将命令提示符移动到该目录C:/ xampp / apache / bin的情况下使用openssl

答案 9 :(得分:0)

虽然与此问题无关,但由于 WP migrate Pro docs 链接到此问题,我想我会在此处发布答案。

如果您在激活 DB Migrate Pro 而不是启用 SSL 时遇到问题,您只需在 wp-config 中添加一行代码

define( 'WPMDB_LICENCE', 'XXXXXXXXXXx' );