PHP mbstring不';不能在Windows上使用Apache

PHP mbstring不';不能在Windows上使用Apache,php,windows,apache,php-extension,mbstring,Php,Windows,Apache,Php Extension,Mbstring,我必须在Windows上使用Apache2.4(32位)运行带有mbstring的PHP5.4(32位,TS)。在我的httpd.conf中,我设置: PHPIniDir "c:/php54" LoadModule php5_module "c:/php54/php5apache2_4.dll" AddHandler application/x-httpd-php .php 在我的php.ini中: extension_dir = "ext" ... extension=php_mbstrin

我必须在Windows上使用Apache2.4(32位)运行带有mbstring的PHP5.4(32位,TS)。在我的httpd.conf中,我设置:

PHPIniDir "c:/php54"
LoadModule php5_module "c:/php54/php5apache2_4.dll"
AddHandler application/x-httpd-php .php
在我的php.ini中:

extension_dir = "ext"
...
extension=php_mbstring.dll
现在,当我执行
php-m
时,它正确地表示已加载mbstring:

...
libxml
mbstring
mcrypt
...
并且
php-i
抛出了一个关于mbstring的部分:

mbstring

Multibyte Support => enabled
Multibyte string engine => libmbfl
HTTP input encoding translation => disabled
libmbfl version => 1.3.2
...
但是,当我有一个带有
的简单index.php时,没有关于mbstring的词,尽管它说使用了正确的php.ini

当我将index.php更改为
时,它会出现错误

Fatal error: Call to undefined function mb_convert_case() in C:\Apache24x86\htdocs\index.php on line 1
我可以用PHP CLI运行完全相同的脚本
PHP index.PHP
,它可以正确地打印
HELLO WORLD


为什么mbstring在php.exe中工作,而在Apache中不工作?当然,我多次重启Apache,甚至重启了我的整个电脑。

我也遇到了同样的问题,我用cmd命令解决了这个问题

  • 关闭所有apache服务
  • 以管理员身份运行cmd
  • 在我的例子中,使用命令
    cdc:\Apache24\bin
  • 使用命令
    bin>mklink php.ini C:\php\php.ini
  • 例如:


    我希望这将帮助您解决问题。

    也许这个答案可以帮助您:Web SAPI和CLI SAPI通常有不同的php.ini文件,您需要确保您已更改了相应的文件。。。。如果您正在从命令行运行
    php-m
    ,并看到它已安装,那么您可能只为CLI SAPIMaybe启用了它,因为您为CLI加载的配置文件与为web服务器加载的配置文件不同。此外,您还必须重新启动web服务器,以使许多配置更改生效。从命令行和您设置的phpinfo页面查看phpinfo的ini文件部分。我认为对php5.4的支持随着php7的发布而结束。您可能需要考虑升级到至少5.6版本,可能与我遇到的问题相同。我的php目录位于D:。因此,我以管理员的身份打开了一个cmd,转到C:\并键入
    mklink/D php D:\php.inì
    ,这就解决了我的问题