Мне нужно получить PHP 5.4 (32 бит, TS) с помощью mbstring, работающей с Apache 2.4 (32 бит) в Windows. В моей httpd.conf я установил это:PHP mbstring не работает с Apache в Windows
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 с <?php phpinfo(); ?>
, нет слова о 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 и даже весь мой компьютер.
Возможно, этот ответ может помочь вам: http://stackoverflow.com/a/25432880/5297359 – swidmann
Веб-интерфейс SAPI и CLI SAPI обычно имеют разные файлы php.ini, вам необходимо убедиться, что вы изменили подходящий ... если вы используете 'php -m' из командной строки и видите, что он установлен, то вы, вероятно, только включили его для CLI SAPI –
Возможно, у вас есть другой файл конфигурации, загружаемый для CLI, как и для веб-сервера. Также вам необходимо перезапустить веб-сервер, чтобы ряд изменений конфигурации вступил в силу. Посмотрите на часть ini-файла phpinfo как с командной строки, так и с страницы phpinfo, которую вы установили. – GordonM