php.ini を見直す
最近のホスティングサービスは php.ini を変更できる場合が多く、「ホスティングだから」とあきらめていた設定を全面的に見直すことができます。
弊社では CakePHP と WordPress を動かす機会が多いのですが、現在は次のような設定に落ち着いております。
php.ini
register_globals = Off session.use_trans_sid = Off magic_quotes_gpc = Off magic_quotes_runtime = Off default_charset = none output_buffering = Off output_handler = none mbstring.detect_order = UTF-8,EUC-JP,SJIS,JIS,ASCII mbstring.encoding_translation = Off mbstring.func_overload = 0 mbstring.http_input = pass mbstring.http_output = pass mbstring.internal_encoding = UTF-8 mbstring.language = Japanese mbstring.script_encoding = UTF-8 mbstring.substitute_character = none
.htaccess
php_flag register_globals Off php_flag session.use_trans_sid Off php_flag magic_quotes_gpc Off php_flag magic_quotes_runtime Off php_value default_charset none php_flag output_buffering Off php_value output_handler none php_value mbstring.detect_order UTF-8,EUC-JP,SJIS,JIS,ASCII php_flag mbstring.encoding_translation Off php_value mbstring.func_overload 0 php_value mbstring.http_input pass php_value mbstring.http_output pass php_value mbstring.internal_encoding UTF-8 php_value mbstring.language Japanese php_value mbstring.script_encoding UTF-8 php_value mbstring.substitute_character none
register_globals は広域変数の自動生成を抑制するために Off にします。 session.use_trans_sid は検索エンジンがセッション ID をインデックスしてしまわないように Off にしています。 magic_quotes 関連は、まともなスクリプトであれば設定に依存しないような作りになっているはずですが、確認のために Off にしています。それ以降については暗黙的な文字コードの変換を防ぐために無効にしています。
この設定では UTF-8 が前提となっておりますので、意図的に破壊された文字コードが渡されることに注意する必要があります。しかし、これを検出する mb_check_encoding() の実装が UTF-8 に対して期待通りの結果を返さないため、別の手法でチェックする必要があります。これに関しましては「別の文字コードへの変換を通じて可逆かを判定すれば実現できる」という情報を見つけたため、現在検証している最中です。
|
日本語によるメール送信 »