在 Windows 7 上安装 TYPO3 6.2.2 时 PHP OpenSSL 扩展不起作用
Posted
技术标签:
【中文标题】在 Windows 7 上安装 TYPO3 6.2.2 时 PHP OpenSSL 扩展不起作用【英文标题】:PHP OpenSSL extension not working while installing TYPO3 6.2.2 on Windows 7 【发布时间】:2014-07-08 10:21:27 【问题描述】:我在 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.
我尝试在互联网上找到有关此错误的解决方案,但我无法解决此错误。
谁能帮我找到解决办法吗?谢谢。
【问题讨论】:
你是否在php.ini中启用了extension=php_openssl.dll 我已经启用了。 和/我猜你在启用扩展后重新启动了 Apache 【参考方案1】:添加如下"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');
【讨论】:
【参考方案2】:以下解决方案可能只能通过在 Xampp 中单击 apache_start.bat
手动启动 Apache-Server 来工作,其他用例和服务器包未经过测试或涵盖。
处理多个版本的 xampp 可能还有其他几个框架我搜索了最适合以下要求的方法:
框架永远不必知道可执行文件 openssl 文件的配置或路径(在 Windows 中:openssl.exe
)。
无论启动哪个服务器,始终找到正确的openssl路径,适合服务器的版本。这避免了 openssl 可能使用 PHP 或 Apache-Server 以外的其他版本编译的问题。
永远不必将不灵活和静态的变量添加到 PATH 变量中。
相反,它们只能在服务器运行时添加。
停止一个服务器版本并启动另一个服务器版本无需进一步操作即可切换到openssl.exe
和openssl.cnf
的正确路径。
基于这些开发人员要求,我描述的步骤与本页上的运行答案有点不同:
通过删除以下行的前导分号,在每个服务器版本(即 xampp-1、xampp-2 等)的 php.ini
文件中启用 openssl:
;extension=php_openssl.dll
打开每个服务器版本的apache_start.bat
文件并替换行
apache\bin\httpd.exe
通过以下 sn-p:
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\
替换为对应服务器的真实路径。
通过 apache_start.bat 或 xampp-control-panel 重新启动 xampp。
此解决方案自然也适用于仅一台服务器,并且具有在系统范围内定义有限 PATH 变量的优势。
更新 如果您仍然有与 TYPO3 相关的问题,无论您选择哪种方法,请检查 installtool 中的 cookie_domain。它应该适用于当前域或为空。 如果您从另一台服务器复制项目(即用于开发),则可能会发生错误的 cookie 域。
【讨论】:
【参考方案3】:要在 Windows 下的 PHP 上启用 OpenSSL,必须采取三个步骤:
启用扩展 - 确保在 php.ini 中取消注释此行:
extension=php_openssl.dll
将PHP文件夹添加到Windows的PATH环境变量中:
控制面板 -> 系统 -> 高级系统设置 -> 环境变量。
在系统变量块中找到路径变量。
在它前面加上 c:\php;
,或者你的 PHP 路径是什么。
为 Windows 创建一个额外的 OPENSSL_CONF 环境变量,其中包含 PHP 的 OpenSSL 配置文件的完整路径:
控制面板 -> 系统 -> 高级系统设置 -> 环境变量。
在系统变量块中单击新建...
变量名:OPENSSL_CONF
变量值:C:\php\extras\ssl\openssl.cnf
修改该值以匹配您的 PHP 安装目录!
重新启动 Windows,使环境更改生效。
关于 Windows 下 PHP OpenSSL 支持的详细信息可以找到here。
【讨论】:
【参考方案4】:在 XAMPP 和 Windows Vista 上对我有用的解决方案:
激活 PHP 模块 openssl
打开 php.ini 并取消注释(delete ';') in:
;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
链接/来源:
http://wiki.typo3.org/Exception/CMS/1318283565
http://www.typo3.net/forum/thematik/zeige/thema/116156/
【讨论】:
我有同样的问题,即使这个解决方案也没有帮助我。 确保重新启动整个 xampp 控制面板(如答案中所述)。从 xampp 控制面板仅重新启动 apache 是不够的,可能是因为 apache 没有以这种方式看到新的环境变量。 “添加一个带值的环境变量“OPENSSL_CONF”” - 这应该是一个系统环境变量,而不是 Apache 的SetEnv
指令集。花了很长时间才意识到这一点。
@AntonBoritskiy 是的,感谢您指出这一点。我已经编辑了答案。
我使用的是typo3的8.1.2
版本,DefaultConfiguration.php
中没有$TYPO3_CONF_VARS['SYS']['binSetup']
【参考方案5】:
在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
对我也不起作用。
【讨论】:
这对我来说也适用于 xampp 7.1.7 和typo3 8.7.3【参考方案6】:将全局环境变量 OPENSSL_CONF 设置为 %ProgramFiles(x86)%\PHP\Current\extras\openssl.cnf
【讨论】:
以上是关于在 Windows 7 上安装 TYPO3 6.2.2 时 PHP OpenSSL 扩展不起作用的主要内容,如果未能解决你的问题,请参考以下文章
TYPO3 6.2 性能、Typoscript 选择、Typoscript 缓存
tt_address:更新到 Typo3 6.2 后后端未显示扩展字段