phpinfo中缺少Mbstring,但在php.ini中启用



类似于这个问题: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都加载完全相同的配置,包括所有扩展(这正是我想要的)。

最新更新