某 EC-CUBEのサイトを新しいサーバにお引越し。そのサーバは suExec の PHP版みたいなモジュール suPHP を使っている。
suPHPといえば、例えば、スクリプトファイルの所有者、所有グループが実行ユーザと異なっていたらエラーになるとか、まあとにかく安全に動作するようにちゃんと動いてくれる。別に初めて使うわけじゃないんで、その事はわかっていたつもりだったんだけど……。
EC-CUBEは、日本の企業が作ったソフトウェアなので、モバイル版だとちゃんと日本の携帯電話にあった HTMLを出力してくれる。古い機種のことも考えていて、Shift_JISでの出力に対応している。
ログイン画面で「システムエラー」になったとき、エラーログを見ればすぐにわかった。データベースのエンコードがおかしいってメッセージが出ているが、データベースはちゃんと utf8で作られている。
そうなると、mb_string 関連の設定がおかしいのだろう。たしかに .htaccess ファイルが存在し、mbstring 関連の設定もされている。しかし、このファイルを色々といじってみても、phpinfo()で調べると、値がやっぱりおかしい。
EC-CUBEコミュニティのフォーラムにも似たようなことが書いてあったし、suPHPのFAQにもちゃんと書いてある(Can I use the php_value directives in .htaccess files with suPHP? のところ)。どうやら、suPHPだと .htaccess ファイルの php_value を読み込まない様子。
ということで、そのフォーラムに書かれているように、php.ini を準備する。EC-CUBEのソースに付属する .htaccess( html/mobile/.htaccess ) の中身を、php.ini 形式に書き直した。これをhtml/mobile/ ディレクトリに置く。
でモバイルサイトでログインする。が、「システムエラー」になる。
もう何度やってもうまくいかない。
色々とキーワードを変えて、日本語のサイト、ブログなどをかたっぱしから見ていった。
結局、Use custom php.ini file with suPHPという英語のページにたどり着いた。
つまり、php.ini を Webサーバが返さないような設定にしておかないと、php.ini に設定されたパラメータは反映されないということだったみたい。。
新しいコメントの投稿