我想在安装 PHP 7.1 和 Apache 2.4 后在我的 Windows 7 上使用它的一些扩展。我编写了一个小测试脚本index.php
调用给定扩展的某些功能。
<?php
var_dump(mb_strlen('p'));
var_dump(mysqli_connect_error());
并取消注释相应的行php.ini
, like
...
;extension=php_ldap.dll
extension=php_mbstring.dll
;extension=php_exif.dll ; Must be after mbstring as it depends on it
extension=php_mysqli.dll
;extension=php_oci8_12c.dll ; Use with Oracle Database 12c Instant Client
...
并根据Windows特定部分配置extension_dirphp.ini
; Directory in which the loadable extensions (modules) reside.
; http://php.net/extension-dir
; extension_dir = "./"
; On windows:
; extension_dir = "ext"
extension_dir = "ext"
我重新启动了 Apache Web 服务器并获取了http://localhost/index.php http://localhost/index.php。我收到错误消息:
致命错误:未捕获错误:调用 C:\Program Files\Apache24\htdocs 中未定义的函数 mb_strlen()...
这意味着扩展未加载。
我仔细检查了php.ini
我所做的修改与phpinfo()
在浏览器中显示:
Loaded Configuration File C:\Program Files\php\php.ini
相反,如果我不是通过网络服务器而是从命令行启动相同的index.php,那么我会得到不同的输出:
C:\Program Files\Apache24\htdocs>"C:\Program Files\php\php.exe" index.php
int(1)
NULL
这意味着扩展已正确加载。
命令行 PHP 使用相同的php.ini
:
c:\Program Files\Apache24\htdocs>php -i|find "Loaded Configuration File"
Loaded Configuration File => C:\Program Files\php\php.ini
怎么会是same php.ini
文件从命令行加载扩展,但通过 Web 服务器使用时不加载它们?