phpinfo缺少mbstring但在php.ini中启用

时间:2014-08-20 21:31:18

标签: php apache

与此问题类似:gd2 not showing in phpinfo, is showing in 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:\PHP\5.4\php.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:\Apache\httpd-2.4\htdocs\index.php on line 2

PHP CLI:

F:\Apache\httpd-2.4\htdocs> php --ini
Configuration File (php.ini) Path: C:\Windows
Loaded Configuration File:         F:\PHP\5.4\php.ini
Scan for additional .ini files in: (none)
Additional .ini files parsed:      (none)

F:\Apache\httpd-2.4\htdocs> 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()中的错误?

1 个答案:

答案 0 :(得分:5)

问题是,当通过apache加载PHP时,extension_dir显然相对于apache服务器根目录读取

但是,从命令行开始,它相对于PHP根目录 读取。

因此,尽管它加载php.ini是相同的,因为我将扩展名dir设置为ext而不是F:\PHP\5.4\ext,apache(或者更确切地说:PHP)在{{}中搜索它1}},它没有找到明显的原因。

F:\Apache\2.4\ext设置为绝对文件夹解决了问题。现在apache和cmd都加载完全相同的配置,包括所有扩展(这正是我想要的)。