在window7上安装Typo3 6.2.2时,PHP OpenSSL扩展无法正常工作

时间:2014-05-20 08:46:19

标签: php windows apache typo3 php-openssl

我在window7上安装了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.

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

任何人都知道,你能帮我找到解决方案吗?感谢。

6 个答案:

答案 0 :(得分:30)

在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(不仅适用于每个PHP脚本TYPO3)

  • 重新启动xampp

链接/来源:

答案 1 :(得分:7)

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

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

    extension=php_openssl.dll

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

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

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

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

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

    可以在here找到有关Windows下PHP OpenSSL支持的详细信息。

答案 2 :(得分:3)

on typo3 6.2.7on 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对我来说也不起作用。

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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

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

  • 框架永远不必了解可执行文件openssl文件的配置或路径(在windows中:openssl.exe)。
  • 启动哪个服务器并不重要,总是找到openssl的正确路径,适合服务器的版本。这避免了openssl可能使用除PHP或Apache-Server之外的其他版本编译的问题。
  • 永远不必将变量添加到PATH-Variable的不灵活和静态。 相反,只要服务器正在运行,它们就会被添加。
  • 停止一个服务器版本并启动另一个服务器版本,无需采取进一步操作即可切换到openssl.exeopenssl.cnf的正确路径。

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

  1. 通过删除以下行的前导分号,在每个服务器版本的php.ini - 文件(即xampp-1,xampp-2等)中启用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。

  4. 此解决方案自然也适用于只有一台服务器,并且在系统范围内定义了有限的PATH-Variables优势。

    <强>更新 如果您仍然遇到与TYPO3相关的问题,无论您选择哪种方法,请检查installtool中的cookie_domain。它应该适用于当前域或为空。 如果您从其他服务器复制项目,即开发,则可能会发生错误的cookie-domain

答案 5 :(得分: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');