php.ini の設定により動作が変化します。
名前 | デフォルト | 変更の可否 | 変更履歴 |
---|---|---|---|
session.save_path | "" | PHP_INI_ALL | |
session.name | "PHPSESSID" | PHP_INI_ALL | |
session.save_handler | "files" | PHP_INI_ALL | |
session.auto_start | "0" | PHP_INI_ALL | |
session.gc_probability | "1" | PHP_INI_ALL | |
session.gc_divisor | "100" | PHP_INI_ALL | PHP 4.3.2 から利用可能 |
session.gc_maxlifetime | "1440" | PHP_INI_ALL | |
session.serialize_handler | "php" | PHP_INI_ALL | |
session.cookie_lifetime | "0" | PHP_INI_ALL | |
session.cookie_path | "/" | PHP_INI_ALL | |
session.cookie_domain | "" | PHP_INI_ALL | |
session.cookie_secure | "" | PHP_INI_ALL | PHP 4.0.4 から利用可能 |
session.cookie_httponly | "" | PHP_INI_ALL | PHP 5.2.0 から使用可能 |
session.use_cookies | "1" | PHP_INI_ALL | |
session.use_only_cookies | "1" | PHP_INI_ALL | PHP 4.3.0 から利用可能 |
session.referer_check | "" | PHP_INI_ALL | |
session.entropy_file | "" | PHP_INI_ALL | |
session.entropy_length | "0" | PHP_INI_ALL | |
session.cache_limiter | "nocache" | PHP_INI_ALL | |
session.cache_expire | "180" | PHP_INI_ALL | |
session.use_trans_sid | "0" | PHP_INI_ALL | PHP_INI_ALL は PHP <= 4.2.3、PHP_INI_PERDIR は PHP < 5 から。PHP 4.0.3 から利用可能。 |
session.bug_compat_42 | "1" | PHP_INI_ALL | PHP 4.3.0 から利用可能。PHP 6.0.0 で削除。 |
session.bug_compat_warn | "1" | PHP_INI_ALL | PHP 4.3.0 から利用可能。PHP 6.0.0 で削除。 |
session.hash_function | "0" | PHP_INI_ALL | PHP 5.0.0 から利用可能 |
session.hash_bits_per_character | "4" | PHP_INI_ALL | PHP 5.0.0 から利用可能 |
url_rewriter.tags | "a=href,area=href,frame=src,form=,fieldset=" | PHP_INI_ALL | PHP 4.0.4 から利用可能 |
セッション管理システムは、php.iniファイルに記述可能な多くの設定オ プションをサポートします。以下に概要を示します。
オプションの引数としてN(数値)を指定できます。 これはセッションファイルを分散して保存する際に ディレクトリ階層レベルを決定します。 例えば、'5;/tmp'とすると /tmp/4/b/1/e/3/sess_4b1e384ad74619bd212e236e52a5a174If という位置にセッションファイルを生成します。 Nを使用するには、これらすべてのディレクトリが 事前に作成されている必要があります。 そのためのシェルスクリプトがext/sessionに mod_files.shというファイル名であります。 また、0以上のNが指定されている場合には自動ガーベッジコレクション が機能しないことに注意してください。詳細は php.ini を見てください。 また、Nを指定する場合は、 session.save_pathを"quotes"で囲う必要があります。 なぜならセパレータ(;) は php.ini ではコメントとしても利用されているからです。
この設定を/tmp (デフォルト)のようにどこか らでも読み込み可能なディレクトリのままにしている場合、サーバ上 の他のユーザがこのディレクトリのファイルのリストを取得すること により、セッションをハイジャックをすることが可能となります。
注意: PHP 4.3.6 以前では、WindowsユーザがPHPのsession関数を使用するためには、 この変数を変更する必要があります。c:/temp のような有効なパスを指定するようにしてください。
注意: 異なる値を session.gc_maxlifetime に指定している 別々のスクリプトがセッションデータの保存場所を共有している場合、 一番小さい設定値に達した時点でデータが消去されます。このような場合には、 お互いに session.save_path を使用します。
注意: デフォルトのファイルに基づくセッションハンドラを使用している場 合、使用するファイルシステムは、アクセス時間(atime)を記録できる 必要があります。Windows FATはこれができないため、 FATファイルシステムまたはatimeの記録ができない他のファイルシス テムで問題を発生した場合は、セッションのガベージコレクト処理を 行う他の手段を用意する必要があります。 PHP4.2.3以降、atimeの代わりにmtime(更新時刻)が使用されます。 このため、atimeが利用できないファイルシステムでの問題は無くなりました。
注意: 有効期限のタイムスタンプは、サーバの時刻に基づいて決まります。 クライアントのブラウザの時刻がこれと同じであるとは限りません。
注意: PHP 4.1.2より前のバージョンでは、このオプションは --enable-trans-sidにより コンパイル時に有効とされていました。 PHP 4.2.0以降、trans-sid機能は常にコンパイルされます。 URLに基づくセッション管理は、Cookieに基づくセッション管理と比べ てセキュリティリスクが大きくなります。例えば、ユーザは、emailに より友人にアクティブなセッションIDを含むURLを送信する可能性があ り、また、ユーザは自分のブックマークにセッションIDを含むURLを保 存し、常に同じセッションIDで使用するサイトにアクセスする可能性 があります。
PHP 6.0.0 以降では、hash 拡張モジュール の任意のアルゴリズムが (この拡張モジュールが使用可能な場合に) 指定できるようになります。たとえば sha512 や whirlpool などです。 サポートされているアルゴリズムの一覧は、 hash_algos() 関数で取得できます。
注意: このディレクティブは PHP 5 で導入されました。
注意: このディレクティブは PHP 5 で導入されました。
注意: HTML/XHTML strict に適合させたい場合には form エントリは削除し、 formフィールドの前後に<fieldset> タグを使ってください。
track_varsおよび register_globals 設定はセッション変数の保存および回復方法に影響を与えます。
注意: PHP 4.0.3以降、track_vars は常 にonとなっています。