このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをFC2ブックマークに追加このエントリをNifty Clipに追加このエントリをPOOKMARK. Airlinesに追加このエントリをBuzzurl(バザール)に追加このエントリをChoixに追加このエントリをnewsingに追加

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 に対して期待通りの結果を返さないため、別の手法でチェックする必要があります。これに関しましては「別の文字コードへの変換を通じて可逆かを判定すれば実現できる」という情報を見つけたため、現在検証している最中です。

back to top