実行時設定
php.ini の設定により動作が変化します。
どこで設定を行うのか を参照してください。
セッション管理システムは、php.iniファイルに記述可能な多くの設定オ プションをサポートします。以下に概要を示します。
-
session.save_handler
string -
session.save_handler
は、 セッションに関連するデータの保存および取得時に使用するハンドラを定義します。 デフォルトは、files
です。各拡張モジュールで、 独自のsave_handler
を使用できることに注意しましょう。 インストール環境単位で登録されているハンドラを取得するには phpinfo() を使用します。 session_set_save_handler() も参照ください。 -
session.save_path
string -
session.save_path
は、保存ハンドラに渡される 引数を定義します。デフォルトのファイルハンドラを選択した場合、 ファイルが作成される場所のパスになります。 session_save_path() も参照ください。オプションの引数として
N
(数値)を指定できます。 これはセッションファイルを分散して保存する際に ディレクトリ階層レベルを決定します。 例えば、'5;/tmp'
とすると/tmp/4/b/1/e/3/sess_4b1e384ad74619bd212e236e52a5a174If
という位置にセッションファイルを生成します。N
を使用するには、これらすべてのディレクトリが 事前に作成されている必要があります。 そのためのシェルスクリプトがext/sessionに mod_files.shというファイル名であります。 Windows 版の mod_files.bat もあります。 また、0以上のN
が指定されている場合には自動ガーベッジコレクション が機能しないことに注意してください。詳細は php.ini を見てください。 また、N
を指定する場合は、session.save_path
を"quotes"で囲う必要があります。 なぜならセパレータ(;
) は php.ini ではコメントとしても利用されているからです。ファイルストレージモジュールが作るファイルのモードは、デフォルトで 600 になります。 このデフォルトを変更するには、オプションの引数
MODE
を利用します。N;MODE;/path
のように使い、MODE
の部分に八進形式のモードを指定します。MODE
を設定しても、そのプロセスの umask は変わりません。警告この設定を /tmp (デフォルト) のようにどこか らでも読み込み可能なディレクトリに設定した場合、サーバー上 の他のユーザーがこのディレクトリのファイルのリストを取得すること により、セッションをハイジャックをすることが可能となります。
警告オプションのディレクトリレベル定数
N
で、 1 あるいは 2 以外の値を使うのは、大半のサイトでは不適切です。 大量のディレクトリが必要になってしまうからです。たとえば、この値を 3 にすると、 ファイルシステム上のディレクトリの数が(2 ** session.sid_bits_per_character) ** 3
にもなり、 ディスク容量や inode の無駄遣いになってしまいます。N
を 2 より大きくするのは、 それを必要とするような大規模サイトに限るようにしましょう。 -
session.name
string -
session.name
はセッション名を指定し、 クッキー名として使用されます。 アルファベット文字のみで指定する必要があります。 デフォルトは、PHPSESSID
です。 session_name()も参照ください。 -
session.auto_start
bool -
session.auto_start
はリクエスト開始時に セッションモジュールがセッションを自動的に開始するかどうかを 指定します。デフォルトは、0
(無効)です。 -
session.serialize_handler
string -
session.serialize_handler
は、シリアル化または シリアル化データを復元するために使用されるハンドラの名前を定義します。 PHP シリアライズフォーマット (php_serialize
)、 PHP 内部フォーマット (php
あるいはphp_binary
)、 そして WDDX (wddx
) に対応しています。WDDX は、PHP がWDDX サポート を有効にしてコンパイルされている場合のみ使用可能です。php_serialize
はプレーンな serialize/unserialize 関数を内部的に使っており、php
やphp_binary
のような制約はありません。これらのシリアライズハンドラでは、$_SESSION の中で数値のインデックスや特殊文字 (|
や!
) を含む文字列のインデックスを使えませんでした。php_serialize
を使えば、 スクリプトの終了時に数値インデックスや特殊文字インデックスのエラーが出ないようにできます。 デフォルトはphp
です。 -
session.gc_probability
int -
session.gc_probability
とsession.gc_divisor
の組み合わせでgc (ガーベッジコレクション)ルーチンの始動を制御します。 デフォルトは、1
です。0
以上の値でなければいけません。 詳細はsession.gc_divisor をご覧ください -
session.gc_divisor