1

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 全体を再起動しました。

4

1 に答える 1

2

私は同じ問題を抱えていて、cmdコマンドで解決しました

  1. すべてのApacheサービスをオフにします
  2. 管理者として cmd を実行する
  3. 私の場合、コマンドを使用して、Apacheのbinフォルダーに移動しますcd C:\Apache24\bin
  4. コマンドでphp.iniファイルとのシンボリックリンクを作成しますbin>mklink php.ini C:\php\php.ini

例:

コマンド例

これが問題の解決に役立つことを願っています。

于 2017-02-12T09:46:21.507 に答える