業務でよくさくらのレンタルサーバーを利用しているのですが、特に設定をしないでそのまま使うといろいろと不都合が発生することがあります。リクエストが勝手にエスケープされて、プログラム中のエスケープとダブって二重エスケープになってしまったり、タイムゾーンが設定されていないとエラーがでたり(これらは僕がPHP5.3.8に切り替えて使っているからかもしれません、というかPHP5.3.x自体のデフォルトの設定かもしれません、そのあたりは未調査です…)。その度に毎回PHPの設定について調べていたので、今回まとめてみました。
標準のPHPではなく、PHP5.3.xを使う
- サーバーコントロールパネルにログイン
- サーバーツールの設定内の PHP言語に関する設定 => PHPのバージョン選択 をクリック
- 新しいバージョンのプルダウンから、PHP5.3.8を選択(ビジネスプロの場合はモジュール版を使えるのでチェック)。
参考
PHPの設定を変更する
ここからが本番です。
- サーバーツールの設定内の PHP言語に関する設定 => PHP設定の編集 をクリック
-
下記の設定を記述し、設定を保存する。
; error_reporting = "2047" ; display_errors = On ; log_errors = On ; error_log = "/home/アカウント名/log/phperror.log" display_errors = Off magic_quotes_gpc = Off date.timezone = 'Asia/Tokyo' output_buffering = Off mbstring.language = Japanese mbstring.encoding_translation = off mbstring.http_input = pass mbstring.http_output = pass mbstring.internal_encoding = UTF-8 mbstring.substitute_character = none mbstring.detect_order = SJIS,EUC-JP,JIS,UTF-8,ASCII post_max_size = 32M upload_max_filesize = 24M
文字コードを自動変換されると都合がわるいことが多いので、自動変換まわりは利用しないように設定。エラーの表示、出力はコメントアウトしていますが、テスト環境等でエラーの表示が必要であれば「error_reporting」「display_errors」のコメントを外せばOKです。ログを出力する場合は「log_errors」「error_log」のコメントを外してください。ただし、ログを出力する場合は、事前にログファイルを作成しておくがあるので、SSHでログインして空のログファイルを作成しておいてください。
また、default_charsetの設定を省略しているため、ヘッダーに文字コードが自動的に出力されません。そのため、スクリプト中で
header('Content-Type: text/html; charset:utf-8');
のような感じで、スクリプト側でContent-typeを送信します。
参考
PHPの設定ではないけど、しておいたほうが良いかもしれないこと
さくらのレンタルサーバーは、ApacheのIndexesが有効になっているため、indexとなるページがない場合、ディレクトリやファイルのリストが表示されてしまいます。Wordpress等でリクエストを一箇所に集めて処理する場合なら良いかもしれませんが、そうで無い場合は「さくらサーバーでの Index of 表示をさせない手順 | ホームページ作成SEOマニアックス」なんかも設定していたほうが良いかもしれません。