类似于这个问题:gd2在phpinfo中没有显示,在php中显示-i
我对mbstring
也有同样的问题。我在我的php.ini
中启用了它(这是唯一的php.ini
在我的整个系统 -是的,我检查了和仔细检查了!),但是当我在Apache上打开phpinfo
时,mbstring丢失了。如果我执行php -i
,所有mbstring
的数据都显示得很好。
Apache (phpinfo.php
)
Configuration File (php.ini) Path C:Windows
Loaded Configuration File F:PHP5.4php.ini
Scan this dir for additional .ini files (none)
Additional .ini files parsed (none)
Apache (index.php
)
Fatal error: Call to undefined function mb_get_info()
in F:Apachehttpd-2.4htdocsindex.php on line 2
PHP CLI: F:Apachehttpd-2.4htdocs> php --ini
Configuration File (php.ini) Path: C:Windows
Loaded Configuration File: F:PHP5.4php.ini
Scan for additional .ini files in: (none)
Additional .ini files parsed: (none)
F:Apachehttpd-2.4htdocs> php index.php
array(14) {
["internal_encoding"]=>
string(10) "ISO-8859-1"
["http_output"]=>
string(4) "pass"
["http_output_conv_mimetypes"]=>
string(31) "^(text/|application/xhtml+xml)"
["func_overload"]=>
int(0)
["func_overload_list"]=>
string(11) "no overload"
["mail_charset"]=>
string(5) "UTF-8"
["mail_header_encoding"]=>
string(6) "BASE64"
["mail_body_encoding"]=>
string(6) "BASE64"
["illegal_chars"]=>
int(0)
["encoding_translation"]=>
string(3) "Off"
["language"]=>
string(7) "neutral"
["detect_order"]=>
array(2) {
[0]=>
string(5) "ASCII"
[1]=>
string(5) "UTF-8"
}
["substitute_character"]=>
int(63)
["strict_detection"]=>
string(3) "Off"
}
这是怎么回事?apache
/phpinfo()
的bug
问题是,当PHP通过apache加载时,extension_dir
显然是相对于apache服务器根目录读取的。
但是,从命令行开始,它是相对于PHP根目录读取的。
因此,尽管它是相同的加载php.ini
,因为我将扩展目录设置为ext
而不是F:PHP5.4ext
, apache(或者更确切地说:PHP)在F:Apache2.4ext
中搜索它,由于明显的原因它没有找到。
设置extension_dir
为绝对文件夹解决了这个问题。现在apache和cmd都加载完全相同的配置,包括所有扩展(这正是我想要的)。