PHP の intl が有効にならない。phpinfo で intl が表示されない

対象の PHP
> php -i
PHP 5.3.23 (cli) (built: Mar 14 2013 23:00:57)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2013 Zend Technologies


オープンソースの Moodle のインストールで PHP エクステンションの intl の組み込みを推奨されたので、組み込むことにした。
が、単純に php.ini の
;extension=php_intl.dll

の ";" を外して
phpinfo.php

にアクセスしても intl が表示されない!
Apache の error.log を見ると
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\\usr\\local\\php\\ext\\php_intl.dll' - \x8ew\x92\xe8\x82\xb3\x82\xea\x82\xbd\x83\x82\x83W\x83\x85\x81[\x83\x8b\x82\xaa\x8c\xa9\x82\xc2\x82\xa9\x82\xe8\x82\xdc\x82\xb9\x82\xf1\x81B\r\n in Unknown on line 0
(実際には 1 行で)

と出力されている。
"\x8ew\x92\xe8~" の部分は、
"\x" を "%" に置換して
http://www.google.com/search?hl=ja&q=%8ew%92%e8

で Web ブラウザでアクセスすると、
指定されたモジュールが見つかりません。\r\n in Unknown on line 0

だと分かった。
php_intl.dll は確かに存在するので、きっと php_intl.dll が何かモジュールを必要としているはず。
いろいろググったら ICU のライブラリが必要そうだ。
ICU のライブラリは PHP のホームディレクトリにある。
> dir icu*
2013/03/18 08:52 17,956,864 icudt49.dll
2013/03/18 08:52 1,686,528 icuin49.dll
2013/03/18 08:52 47,104 icuio49.dll
2013/03/18 08:52 196,096 icule49.dll
2013/03/18 08:52 44,032 iculx49.dll
2013/03/18 08:52 55,808 icutest49.dl
2013/03/18 08:52 147,456 icutu49.dll
2013/03/18 08:52 1,289,728 icuuc49.dll

環境変数 PATH も
> path
PATH=~;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;
C:\usr\local\php

と大丈夫なはずだが、やはり phpinfo に intl が現れない。
よくよく調べたら、システム環境変数の PATH に C:\usr\local\php を設定していなかったことが敗因だった。
PATH を設定し直して Windows サービスの Apache を再起動して、無事解決。
ちなみに、タスクトレイの Apache Monitor での再起動ではなぜか intl が有効にならなかった。

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 1

かわいい

この記事へのコメント

この記事へのトラックバック