【问题标题】:Enabling the OpenSSL in XAMPP在 XAMPP 中启用 OpenSSL
【发布时间】:2012-03-16 23:44:06
【问题描述】:

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

首先检查我的 PHP 扩展目录是否有序;没有扩展,php_openssl.dll

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

另外,我在 Google 上进行了搜索,发现有人遇到了同样的问题。 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

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

【问题讨论】:

  • 请将@Memochipan 标记为答案

标签: php ssl xampp


【解决方案1】:
[PHP_OPENSSL]
extension=php_openssl.dll

这就是答案。

【讨论】:

    【解决方案2】:

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

    ;extension=php_openssl.dll
    

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

    extension=php_openssl.dll
    

    【讨论】:

    • 您可能还需要取消注释 php.ini 中的 'extension_dir = "ext"' 并相应地设置路径。
    • 感谢您在上面的评论。我想我在某些时候改变了它……我猜。无论如何,谢谢。
    • php.ini文件一般在xampp/php/php.ini
    【解决方案3】:

    我使用 xampp。之前我在 phpMailer 中尝试了示例文件“test_smtp_gmail_basic.php”(您可以在此处下载 phpMailer:https://github.com/Synchro/PHPMailer),但出现以下错误:

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

    我在 php.ini 中注释掉 ; extension=php_openssl.dll 后,它现在可以工作了。

    【讨论】:

      【解决方案4】:

      在 xampp 中,如果您的 php.ini 文件中不存在“extension=php_openssl.dll”,则将其添加到 php.ini 文件的“Windows 扩展”部分 并重新启动您的 apache。 它对我有用..

      【讨论】:

        【解决方案5】:

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

        找到您的 php.ini 文件。

        $inipath = php_ini_loaded_file();
        

        在文件中启用 openssl:

        extension=php_openssl.dll 
        

        开启allow_url_fopen

        allow_url_fopen = On
        

        重启apache就完成了!

        【讨论】:

          【解决方案6】:

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

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

          第 3 步:重启 Apache

          【讨论】:

            【解决方案7】:

            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】:

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

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

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

              【讨论】:

                【解决方案9】:

                那么,我们做了什么来使 PHP 中的 openssl_pkey_new() 和所有其他 openssl_ 函数工作...

                • 在(右/活动)php.ini 中启用了扩展php_openssl.dll。已检查。
                • 检查xampp\apache\conf\ 中是否存在openssl.cnf(以及XAMPP 中的其他两个目录中)。已检查。
                • 在Windows系统设置中添加了环境变量OPENSSL_CONF,上面有openssl.cnf的完整路径。已检查。
                • 重新启动 Apache (然后重新启动计算机几次都不起作用...)。已检查。

                还是不行,并抛出诸如

                之类的错误
                • 错误:0E06D06C:配置文件例程:NCONF_get_string:无值
                • error:02001002:system library:fopen:No such file or directory
                • 错误:2006D080:BIO 例程:BIO_new_file:没有这样的文件

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

                1.环境问题

                从 PHP 脚本运行 phpinfo(),然后转到“Apache 环境”部分。检查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);
                

                【讨论】:

                • 不是php_info(),而是phpinfo()
                • 只需将此行添加到 Apache httpd.conf 文件中。 SetEnv OPENSSL_CONF C:/xampp/apache/conf/openssl.cnf
                【解决方案10】:

                虽然与这个问题无关,但作为 WP migrate Pro 文档链接到这个问题,我想在这里发布一个答案。

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

                define( 'WPMDB_LICENCE', 'XXXXXXXXXXx' );

                【讨论】:

                  猜你喜欢
                  • 2012-12-04
                  • 1970-01-01
                  • 2013-03-20
                  • 2013-06-25
                  • 2014-09-08
                  • 2011-06-10
                  • 2013-01-06
                  相关资源
                  最近更新 更多