如何使用 Apache Server 2.4 在 PHP 7.4 中启用 openSSL?
Posted
技术标签:
【中文标题】如何使用 Apache Server 2.4 在 PHP 7.4 中启用 openSSL?【英文标题】:How to enable openSSL in PHP 7.4 with Apache Server 2.4? 【发布时间】:2020-09-07 04:39:12 【问题描述】:我知道已经出现了非常相似的问题,但似乎没有一个可以解决我的问题。我想知道你是否可以帮我解决这个问题。我会尽量具体:
我使用的是 Windows x64 php 版本 7.4.6 Apache 服务器 2.4.43 在 php.ini 文件中,我取消了 extension=openssl 和 extension_dir = "ext" 的注释 在 httpd.conf 文件中,我添加了这个额外的 sn -p<IfModule php7_module>
AddHandler application/x-httpd-php .php
PHPIniDir "C:/php-7.4.6"
LoadFile "C:/php-7.4.6/libcrypto-1_1-x64.dll"
LoadFile "C:/php-7.4.6/libssl-1_1-x64.dll"
LoadFile "C:/php-7.4.6/libssh2.dll"
LoadFile "C:/php-7.4.6/nghttp2.dll"
LoadFile "C:/php-7.4.6/php7ts.dll"
</IfModule>
(我在某处看到了可能是解决方案的 LoadFiles,至少它不适合我)
在命令行上检查了安装的模块(php -m),似乎启用了 ssl 模块。但是,当使用 extension_loaded ('openssl') 指令检查时,它会返回 false。此外,使用 phpinfo() 我看到 OpenSSL 支持被禁用,我应该安装 (ext/openssl)。 我不知道为什么他们告诉我相反的事情。 https wrapper 也没有启用。 我检查了 php 和 apache 是否都从不同的 php.ini 文件中读取,它们都说同样的话: 配置文件 (php.ini) 路径 C:\WINDOWS 加载配置文件 C:\php-7.4.6\php.ini顺便说一句,我不太了解,因为 Windows 文件夹中没有 php.ini。我知道该文件是从下面指定的路径获取的。
在 ext 文件夹中有 php_openssl.dll 文件。 我尝试将 C:\php-7.4.6\libcrypto-1_1-x64.dll 作为环境变量包含在其他链接中。 是的,我多次重新启动服务器。 我想我已经没有选择了,我不知道我还能做什么。谢谢你的帮助! 我尝试附上我一直在访问的链接,但我确信我会因为迷路而留下一些链接。Unable to find the wrapper "https" with file_get_contents
OpenSSL Support disabled in Apache 2.4/PHP 7.4.4
PHP OpenSSL extension not working while install Typo3 6.2.2 on window7
How to enable HTTPS stream wrappers
非常感谢!
【问题讨论】:
【参考方案1】:幸运的是,我设法让它工作,我想与您分享所有解决方案,以防您遇到同样的问题。 我碰巧想到检查Apache的错误日志,并为每个模块注册了以下错误:无法加载动态库。它试图从 /ext 文件夹中获取模块,它不知道它在哪里,所以我所做的是将 php.ini 文件中的 extension_dir 更改为绝对 PATH "C:\php-7.4. 6\ext",现在它就像做梦一样!
【讨论】:
太好了,成功了。虽然我使用正斜杠而不是反斜杠。【参考方案2】:php.ini中有一行:
;extension_dir = "ext"
除了取消注释 extension=php_openssl.dll
之外,您只需取消注释即可。
【讨论】:
以上是关于如何使用 Apache Server 2.4 在 PHP 7.4 中启用 openSSL?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Apache 2.4 上使用标签 <If ...> 测试文件是不是存在?
apache编译安装 httpd 2.2 httpd 2.4
使用 Apache 2.4 的闪亮服务器中的代理 Web 套接字