PHP のチェックしておきたい設定

スポンサーリンク

前回構築した環境から引き続き初期設定を行っていきます。
※前回↓

設定ファイルのバックアップ

設定ファイルは、/etc 配下に php.ini ファイルがありますので、修正前の状態を残しておくために、こちらのファイルをバックアップします。


$ sudo cp /etc/php.ini /etc/php.ini.YYYYMMDD

※バックアップ時の suffix 部分は、変更日がわかるように日付を設定します。

設定ファイルの編集方法

vi もしくは、vim コマンドにて php.ini ファイルを開き、編集します。


$ sudo vim /etc/php.ini

文字コード設定(日本語環境にする設定)

default_charset

デフォルトの文字コード設定となります。UTF-8へ設定します。
以下に紹介する mbstring.http_input、mbstring.http_output、mbstring.internal_encoding が未設定の場合のデフォルトとしても使用されます。
※変更可能:PHP_INI_ALL


default_charset = "UTF-8"

mbstring.language

mbstringのデフォルトの言語設定となります。日本語設定には、Japaneseを設定します。
※変更可能:PHP_INI_ALL


mbstring.language = Japanese

mbstring.internal_encoding

内部文字のエンコーディングのデフォルト値の設定となります。
※PHP5.6.0以降非推奨となっているので、コメントアウトしていますが、空のままでも大丈夫です。
※変更可能:PHP_INI_ALL


; mbstring.internal_encoding =  # 空のまま、もしくは、コメントアウト

mbstring.http_input

HTTP入力文字のエンコーディングのデフォルト値の設定となります。
※PHP5.6.0以降非推奨となっているので、コメントアウトしていますが、空のままでも大丈夫です。


; mbstring.http_input =    # 空のまま、もしくは、コメントアウト

mbstring.http_output

HTTP出力文字のエンコーディングのデフォルト値の設定となります。
※PHP5.6.0以降非推奨となっているので、コメントアウトしていますが、空のままでも大丈夫です。


; mbstring.http_output =    # 空のまま、もしくは、コメントアウト

mbstring.encoding_translation

HTTP入力文字のエンコーディングを内部文字のエンコーディングに自動的に変換するかどうかの設定となります。
自動的に変換しないように「Off」を設定します。
※変更可能:PHP_INI_PERDIR


mbstring.encoding_translation = Off

mbstring.detect_order

文字コード自動検出の優先順位の設定となります。
ちなみに、auto を設定すると、ASCII, JIS, UTF-8, EUC-JP, SJISの順になります。
※変更可能:PHP_INI_ALL


mbstring.detect_order = UTF-8,SJIS,EUC-JP,JIS,ASCII

タイムゾーン設定

date.timezone

PHP内部で扱う時間の設定を行っていきます。
日本時間を利用するため、タイムゾーンを「Asia/Tokyo」に設定します。
※変更可能:PHP_INI_ALL


date.timezone = Asia/Tokyo

メモリ、データ関連設定

PHPで扱うメモリとデータの設定関係を行っていきます。
サービスの要件次第で変わってくる箇所になるかと思います。

memory_limit

スクリプトが確保できる最大メモリの設定となり、デフォルトは、128Mとなってます。
-1 を設定するとメモリ制限なしの状態になりますが、無限ループ等、誤ったスクリプトでのサーバー負荷を防止するためでもありますので、あまりおすすめはできません。
※post_max_size よりも大きくする必要があります。
 memory_limit > post_max_size > upload_max_filesize
※変更可能:PHP_INI_ALL


memory_limit = 128M

post_max_size

送信できるPOSTデータの最大サイズの設定となり、デフォルト 8M となってます。
※upload_max_filesize よりも大きくする必要があります。
※変更可能:PHP_INI_PERDIR


post_max_size = 8M

max_input_vars

送信する入力変数の上限値の設定となります。
$_GET、$_POST そして $_COOKIE のそれぞれ個別に適用されます。
この設定値を超えた入力変数があった場合には、設定値以降の数の入力変数は削除されますので、基幹システム等で入力項目が多い画面の場合には注意が必要です。
※変更可能:PHP_INI_PERDIR


max_input_vars = 1000

upload_max_filesize

アップロードするファイルの最大サイズの設定となります。
デフォルト 2M なので、サービスの仕様に応じて、適宜変更する設定となります。
※変更可能:PHP_INI_PERDIR


upload_max_filesize = 2M

セキュリティ関連設定

サービスを運用する上で、必ず抑えておきたいところです。

expose_php

HTTP のレスポンスヘッダーに PHP のバージョン情報を出力するかどうかの設定となります。
こちらを On に設定していると、PHP のバージョンが露呈してしまいますので、特に理由がない限りは、Off に設定した方がいいです。
※php.ini でのみ設定可


expose_php = Off

session.sid_length

こちらを設定する事で、セッション ID 文字列の長さを指定することができます。
22 から 256 までの値を設定することができ、デフォルトは 32 となってます。
公式では、少なくとも 32 を指定することが推奨となってます。
※PHP 7.1.0 で導入された設定となります。
※変更可能:PHP_INI_ALL


session.sid_length = 32

session.sid_bits_per_character

セッション ID 文字のビット数を指定することができ、 ‘4’、’5′ 、’6′ のいずれかを指定します。 デフォルトは 4 となっており、値が大きいほどセッション ID が強力になります。
公式では、5 を推奨となってます。
※PHP 7.1.0 で導入された設定となります。
※変更可能:PHP_INI_ALL


session.sid_bits_per_character = 5

タイムアウト設定

max_execution_time

スクリプトのタイムアウト時間(実行時間)の設定となります。
値は秒単位で指定することができ、0 を設定すると無制限の設定となります。
重たい処理がある場合に、サーバーの負荷を防止するためでもありますので、php.ini ではあまり大きな値にしないことをおすすめします。
もし、バッチ処理や帳票出力でどうしても時間がかかる場合には、ini_set を使用し、その処理でのみ、設定することをおすすめします。

※変更可能:PHP_INI_ALL


max_execution_time = 30

※プログラム内に ini_set で設定する場合


ini_set("max_execution_time", 3600);

エラー関連設定

display_errors

画面上にエラーを出力するかどうかの設定となります。
開発環境では On に設定し、本番環境では、エラー内容が表示されるとよくないので Off に設定します。
環境に応じて変更するため、php.ini では設定せずに、PHP ファイル内に ini_set を使用して設定する事が多いかと思います。
※変更可能:PHP_INI_ALL


display_errors = Off

error_reporting

出力するエラーレベルの設定となります。
※変更可能:PHP_INI_ALL


error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT

※プログラム内に設定する場合


error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT)

コメント

タイトルとURLをコピーしました