我必须在Windows上运行带有Apache 2.4(32位)的mbstring的PHP 5.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
...
但是,当我有一个带有<?php phpinfo(); ?>
的简单index.php时,没有关于mbstring的说法,即使它说使用了正确的php.ini。
当我将index.php更改为<?php echo mb_convert_case("hello world", MB_CASE_UPPER); ?>
时,错误
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,甚至我的整个PC。
答案 0 :(得分:2)
我遇到了同样的问题,我用cmd命令解决了它
cd C:\Apache24\bin
bin>mklink php.ini C:\php\php.ini
示例:
我希望这可以帮助您解决问题。