对我来说,PHP 仅在从 CLI 调用时才能完美加载扩展,但在我通过 Apache 加载页面时却不能。
例如,这是 的输出php -m
:
[PHP Modules]
bcmath
calendar
Core
ctype
curl
date
dom
filter
hash
iconv
json
libxml
mysqlnd
openssl
pcre
PDO
Phar
readline
Reflection
session
SimpleXML
SPL
standard
tokenizer
xml
xmlreader
xmlwriter
zip
zlib
但是,当通过 Apache 运行时:
1. 在phpinfo()
中,OpenSSL 支持显示为“已禁用”。
2.extension_loaded("curl")
是false
3.get_loaded_extensions()
不包括curl
or OpenSSL
。
4. 尝试使用任何扩展功能失败。
这是var_dump(get_loaded_extensions());
通过 Apache 运行时:
array(28) {
[0]=>
string(4) "Core"
[1]=>
string(6) "bcmath"
[2]=>
string(8) "calendar"
[3]=>
string(5) "ctype"
[4]=>
string(4) "date"
[5]=>
string(6) "filter"
[6]=>
string(4) "hash"
[7]=>
string(5) "iconv"
[8]=>
string(4) "json"
[9]=>
string(3) "SPL"
[10]=>
string(4) "pcre"
[11]=>
string(8) "readline"
[12]=>
string(10) "Reflection"
[13]=>
string(7) "session"
[14]=>
string(8) "standard"
[15]=>
string(7) "mysqlnd"
[16]=>
string(9) "tokenizer"
[17]=>
string(3) "zip"
[18]=>
string(4) "zlib"
[19]=>
string(6) "libxml"
[20]=>
string(3) "dom"
[21]=>
string(3) "PDO"
[22]=>
string(4) "Phar"
[23]=>
string(9) "SimpleXML"
[24]=>
string(3) "xml"
[25]=>
string(9) "xmlreader"
[26]=>
string(9) "xmlwriter"
[27]=>
string(14) "apache2handler"
}
操作系统:Windows 10 1809, up to date.
php -v
:
PHP 7.4.5 (cli) (built: Apr 14 2020 16:17:34) ( ZTS Visual C++ 2017 x64 )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
httpd
:来自https://www.apachelounge.com/的 Apache 2.4.43 Win64
PHP 和 Apache 通过 this in httpd.conf
(mod_php) 进行交互:
LoadModule php7_module "C:/<path_to_PHP>/PHP7/php7apache2_4.dll"
这台机器上只安装了一个 Apache+PHP。
我试过的:
- 确认 PHP 在两种模式下都使用相同的 ini 文件。如果我从 ini 文件中禁用扩展名,它们就会停止显示
php -m
(应该如此)。 - (重新)安装 MS Visual Studio C++ Redistributable 2015-19(x86 和 x64)。
- 重新启动
httpd
。 - 重启电脑。
- 重新安装 PHP 和 Apache。
display_startup_errors=on
然后检查日志。Apache 和 PHP 错误日志中都没有相关信息。- 确认 PHP 正在 ZTS 中运行
php.exe -v
,“线程安全”显示为phpinfo()
通过 Apache 启用。
请帮忙。我需要这个网络服务器启动并运行,这让我发疯。