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(); ?>
正しい php.ini が使用されたと表示されていても、単純な index.php に mbstring に関する記述がありません。
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 全体を再起動しました。