期待の国産多言語対応 EC サイト構築ツール Live Commerce 用にセッティングした CentOS 5.5 上の Apache 2.2.3 + PHP 5.3.3 環境に concrete5 (5.4.0.5.ja) をインストールしたところ、DB 情報入力後の段階で、次のようなエラー・メッセージが大量に表示された。

[Mon Oct 04 15:35:xx 2010] [error] [client 192.168.xxx.xxx] PHP Warning:  mb_ereg_match(): mbregex compile err: premature end of char-class in /path/to/example.com/htdocs/concrete/libraries/3rdparty/Utf8MbcsUnigram.php on line 120, referer: http://www.example.com/
[Mon Oct 04 15:35:xx 2010] [error] [client 192.168.xxx.xxx] PHP Warning:  mb_ereg_match(): mbregex compile err: premature end of char-class in /path/to/example.com/htdocs/concrete/libraries/3rdparty/Utf8MbcsUnigram.php on line 122, referer: http://www.example.com/
 :
(上記 2行を大量に繰り返し)
 :
[Mon Oct 04 15:35:xx 2010] [error] [client 192.168.xxx.xxx] PHP Warning:  Cannot modify header information - headers already sent by (output started at /path/to/example.com/htdocs/concrete/libraries/3rdparty/Utf8MbcsUnigram.php:122) in /path/to/example.com/htdocs/concrete/libraries/view.php on line 758, referer: http://www.example.com/

とりあえずインストールは完了して concrete5 も普通に動いているように見えるが、このまま放置するのは気持ち悪いので、解決を試みる。

と言っても別に大したことではなく、単に php.ini または .htaccess で

mbstring.internal_encoding = UTF-8

を明示的に指定することで、インストール時のエラーは解消する。

今回の concrete5 インストール先は NFS 共有ディレクトリの中にあり、PHP が 5.1.6 の別の CentOS 5.5 でマウントして concrete5 をインストールしてみると、php.ini で "mbstring.internal_encoding" がコメント・アウトされたデフォルトの状態でもエラーは出なかった (一応 concrete5 的には、PHP 5.1 は非推奨)。Web で検索すると、以前のバージョンの concrete5 や PHP 5.2 でも同様の現象が発生しているらしいので、PHP 5.2 以降の問題だろう。

まァ 「問題」 と言っても、concrete5 日本語公式サイトのドキュメントに PHP のパラメーターの件はちゃんと書いてある。要は 「ドキュメントをよく読みましょう」 と言うだけの話だ。

尚、今回 PHP 5.3.3 の Web サーバーに concrete5 をインストールしたのは、同一ドメイン内で concrete5 と Live Commerce を同居させるテストの一環。concrete5 で構築したサイトのサブ・ディレクトリで Live Commerce を運用したいと考えていたが、今のところ Live Commerce はドキュメント・ルートを握っておくことが必須で、concrete5 の管理下にある深い階層にインストールできなそうだ。ひとまずは 「同一ドメインでホスト名が異なる別サイト」 とするしかない、かな?

Comments are closed.