18

我在 Windows 7 上安装了 TYPO3 6.2.2,但收到如下错误消息:

PHP OpenSSL extension not working Something went wrong while trying to create a new private key for testing. Please check the integration of the PHP OpenSSL extension and if it is installed correctly.

我尝试在互联网上找到有关此错误的解决方案,但我无法解决此错误。

任何人都可以帮我找到解决方案吗?谢谢。

4

6 回答 6

33

在 XAMPP 和 Windows Vista 上为我工作的解决方案:

  • 激活 PHP 模块 openssl

    打开 php.ini 并取消注释(删除';'):

    ;extension=php_openssl.dll

    通过运行 phpinfo() 仔细检查扩展是否已启用。

  • 添加具有值的系统环境变量“OPENSSL_CONF”

    C:\xampp\apache\conf\openssl.cnf

    ...假设您将 xampp 安装到 C:\xampp。

  • 将路径设置为 'openssl.exe',位于 C:\xampp\apache\bin

    • 要么设置$TYPO3_CONF_VARS['SYS']['binSetup']...\htdocs\typo3_src-6.2.x\typo3\sysext\core\Configuration\DefaultConfiguration.php'openssl=c:/xampp/apache/bin/openssl.exe'

    • 或附加c:\xampp\apache\bin到环境变量 PATH(不仅适用于 TYPO3,而且适用于每个 PHP 脚本)

  • 重启 xampp

链接/来源:

于 2014-06-29T15:34:58.617 回答
10

要在 Windows 下的 PHP 上启用 OpenSSL,必须采取三个步骤:

  1. 启用扩展 - 确保在 php.ini 中取消注释此行:

    extension=php_openssl.dll

  2. 将 PHP 文件夹添加到 Windows 的 PATH 环境变量中:

    控制面板 -> 系统 -> 高级系统设置 -> 环境变量。
    在 System Variables 块中找到 Path 变量。
    放在c:\php;它前面,或者你的 PHP 路径是什么。

  3. 为 Windows 创建一个额外的 OPENSSL_CONF 环境变量,其中包含 PHP 的 OpenSSL 配置文件的完整路径:

    控制面板 -> 系统 -> 高级系统设置 -> 环境变量。
    在系统变量块中单击新建...
    变量名称:OPENSSL_CONF
    变量值:C:\php\extras\ssl\openssl.cnf
    修改该值以匹配您的 PHP 安装目录!

重新启动 Windows,使环境更改生效。

有关 Windows 下 PHP OpenSSL 支持的详细信息,请参见此处

于 2016-03-17T19:43:35.757 回答
3

在typo3 6.2.7上在win7 XAMPP 1.8.3上

openSSL 错误的解决方案是创建C:\openssl-1.0.1i-win32\ssl文件夹并将E:\Portables\xampp\apache\conf\openssl.cnf放入其中。我从一个德国网站得到了一个关于它的方向。

我是如何发现它的(以防万一版本发生变化),在 XAMPP 控制面板的 shell 中,openssl 命令给出

警告:无法打开配置文件:E:/Portables/xampp/apache/bin/openssl.cnf。

但是在那里添加文件并没有帮助。我添加并删除了文件。

添加;E:\Portables\xampp\apache\bin到 PATH 环境变量(系统属性 -> 高级)。在 CMD 窗口(不是 XMPP shell)上运行命令 openssl,消息:

警告:无法打开配置文件:c:/openssl-1.0.1i-win32/ssl/openssl.cnf

在此处添加文件,现在可以删除对环境变量 PATH 的添加。

添加OPENSSL_CONF也对我不起作用。

于 2015-02-26T19:32:50.900 回答
1

将全局环境变量 OPENSSL_CONF 设置为 %ProgramFiles(x86)%\PHP\Current\extras\openssl.cnf

于 2014-08-28T17:59:53.983 回答
0

以下解决方案可能只能通过apache_start.bat在 Xampp 内单击手动启动 Apache-Server 来工作,其他用例和服务器包未经过测试或覆盖。


处理多个版本的 xampp 以及可能的其他几个框架,我搜索了一种最适合以下要求的方法:

  • 框架永远不必知道可执行文件 openssl 文件的配置或路径(在 windows: 中openssl.exe)。
  • 启动哪个服务器都没有关系,始终找到正确的 openssl 路径,适合服务器的版本。这避免了 openssl 可能使用 PHP 或 Apache-Server 以外的其他版本编译的问题。
  • 变量永远不必不灵活和静态地添加到 PATH 变量中。相反,只要服务器正在运行,就应该添加它们。
  • 停止一个服务器版本并启动另一个服务器版本是在没有进一步操作的情况下切换到openssl.exeand的正确路径openssl.cnf

基于这些开发人员要求,我描述的步骤与此页面上的运行答案有点不同:

  1. php.ini通过删除以下行的前导分号,在每个服务器版本(即 xampp-1、xampp-2 等) 的 -file 中启用 openssl : ;extension=php_openssl.dll

  2. 打开apache_start.bat每个服务器版本的文件并替换该行

    apache\bin\httpd.exe

    通过以下代码段:
    SET OPENSSL_CONF=C:\xampp-x\apache\conf\openssl.cnf IF EXIST C:\xampp-x\apache\bin SET PATH=%PATH%;C:\xampp-x\apache\bin apache\bin\httpd.exe

    请注意,您到处都替换C:\xampp-x\为相应服务器的真实路径。

  3. 通过 apache_start.bat 或 xampp-control-panel 重新启动 xampp。

该解决方案自然也仅适用于一台服务器,并且具有在系统范围内定义有限的 PATH 变量的优势。

更新 如果您仍然有与 TYPO3 相关的问题,无论您选择哪种方法,请检查安装工具中的 cookie_domain。它应该适用于当前域或为空。如果您从另一台服务器复制项目(即用于开发),则可能会出现错误的 cookie 域。

于 2017-10-07T21:27:25.517 回答
0

添加如下路径"config" => "D:/xampp/php/extras/openssl/openssl.cnf",解决了这个问题。

$key = openssl_pkey_new([
    "config" => "D:/xampp/php/extras/openssl/openssl.cnf",
    'digest_alg' => 'aes256',
    'private_key_type' => OPENSSL_KEYTYPE_RSA,
    'encrypt_key' => false,
    'encrypt_key_cipher' => OPENSSL_CIPHER_AES_256_CBC,
]);
openssl_pkey_export_to_file($key, $this->folder . '/private.pem');
于 2020-09-23T18:48:20.210 回答