在Windows 7上安装TYPO3 6.2.2时,PHP的OpenSSL扩展无法正常工作。

18

我在Windows 7上安装了TYPO3 6.2.2,但是遇到以下错误信息:

PHP OpenSSL 扩展不起作用。在尝试创建新的测试私钥时出现了问题。请检查PHP OpenSSL扩展的集成和正确安装情况。

我尝试在互联网上寻找关于此错误的解决方案,但无法解决这个bug。

有人能帮助我找到解决方案吗?谢谢。


你在php.ini中启用了extension=php_openssl.dll吗? - Satya
1
我已经启用了它。 - user3471037
你好,我猜想你在启用扩展后重启了Apache服务器。 - Satya
6个回答

34

适用于我在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 中

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

    • 要么将 c:\xampp\apache\bin 追加到环境变量PATH中(对每个PHP脚本都有效,不仅限于TYPO3)

  • 重新启动 XAMPP

链接/来源:


2
我也遇到了同样的问题,甚至这个解决方案也没有帮到我。 - tttpapi
3
请确保重新启动整个xampp控制面板(如答案所述)。仅从xampp控制面板重启apache是不够的,可能是因为这种方式下Apache无法看到新的环境变量。 - gebi
1
添加一个名为“OPENSSL_CONF”的环境变量,其值应该是系统环境变量,而不是使用Apache的SetEnv指令设置的变量。在意识到这一点之前,我花了相当长的时间。 - Anton Boritskiy
@AntonBoritskiy 是的,谢谢你指出这一点。我已经编辑了答案。 - Alan
这个解决方案适用于我正在使用的typo3_7.19和WAMP服务器!只需相应更改openssl.exe和openssl.conf的路径名称即可。 - web developer guy
显示剩余2条评论

11
要在 Windows 下启用 PHP 中的 OpenSSL,需要三步操作:
  1. 启用扩展 - 确保在 php.ini 中取消注释此行:

    extension=php_openssl.dll

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

    控制面板 -> 系统 -> 高级系统设置 -> 环境变量。
    在“系统变量”块中找到“Path”变量。
    在前面加上 c:\php;,或者你的 PHP 路径。

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

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

重新启动 Windows 以便环境更改生效。

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


3
在win7 XAMPP 1.8.3上的typo3 6.2.7中,解决openSSL错误的方法是创建C:\openssl-1.0.1i-win32\ssl文件夹,并将E:\Portables\xampp\apache\conf\openssl.cnf放入其中。我从一个德国网站得到了关于此问题的指引。
具体操作步骤(以防版本变化):在XAMPP控制面板的命令行中,使用openssl命令会出现以下警告信息:

WARNING: can't open config file: E:/Portables/xampp/apache/bin/openssl.cnf.

但是将文件添加到该位置并不能解决问题。 我添加并删除了该文件。
;E:\Portables\xampp\apache\bin 添加到PATH环境变量中(系统属性 ->高级),在CMD窗口(而不是XMPP shell)中运行openssl命令,信息如下:

WARNING: can't open config file: c:/openssl-1.0.1i-win32/ssl/openssl.cnf

将文件添加到该位置后,可以删除对环境变量PATH的修改。
OPENSSL_CONF添加也无法解决问题。

这对我来说也适用于XAMPP 7.1.7和TYPO3 8.7.3。 - Simon Zyx

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

0
以下解决方案可能仅适用于通过单击Xampp中的apache_start.bat手动启动Apache服务器,其他用例和服务器包未经测试或覆盖。

处理多个版本的xampp和可能还有其他几个框架,我寻找了一种最适合以下要求的方法:

  • 框架永远不必知道配置或可执行openssl文件的路径(在Windows中:openssl.exe)。
  • 无论启动哪个服务器,始终可以找到正确的openssl路径,以适应服务器版本。这避免了openssl可能与PHP或Apache服务器编译的另一个版本存在问题。
  • 变量不必以不灵活和静态的方式添加到PATH变量中。相反,只有在运行服务器时才会添加它们。
  • 停止一个服务器版本并启动另一个服务器版本是切换到openssl.exeopenssl.cnf正确路径而无需进一步操作。

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

  1. 启用每个服务器版本(例如xampp-1、xampp-2等)的php.ini文件中的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控制面板重新启动xampp。

这个解决方案自然也适用于只有一个服务器,并具有全局定义的受限PATH变量的优点。

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


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');

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接