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_PERDIR | |
session.gc_probability | "1" | PHP_INI_ALL | |
session.gc_divisor | "100" | PHP_INI_ALL | |
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 | |
session.cookie_httponly | "" | PHP_INI_ALL | PHP 5.2.0 から利用可能 |
session.cookie_samesite | "" | PHP_INI_ALL | PHP 7.3.0 から利用可能 |
session.use_strict_mode | "0" | PHP_INI_ALL | PHP 5.5.2 から利用可能 |
session.use_cookies | "1" | PHP_INI_ALL | |
session.use_only_cookies | "1" | PHP_INI_ALL | |
session.referer_check | "" | 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 | |
session.trans_sid_tags | "a=href,area=href,frame=src,form=" | PHP_INI_ALL | PHP 7.1.0 から利用可能 |
session.trans_sid_hosts | $_SERVER['HTTP_HOST'] | PHP_INI_ALL | PHP 7.1.0 から利用可能 |
session.sid_length | "32" | PHP_INI_ALL | PHP 7.1.0 から利用可能 |
session.sid_bits_per_character | "5" | PHP_INI_ALL | PHP 7.1.0 から利用可能 |
session.hash_function | "0" | PHP_INI_ALL | PHP 5.0.0 から利用可能。PHP 7.1.0 で削除されました。 |
session.hash_bits_per_character | "4" | PHP_INI_ALL | PHP 5.0.0 から利用可能。PHP 7.1.0 で削除されました。 |
session.upload_progress.enabled | "1" | PHP_INI_PERDIR | PHP 5.4.0 から利用可能 |
session.upload_progress.cleanup | "1" | PHP_INI_PERDIR | PHP 5.4.0 から利用可能 |
session.upload_progress.prefix | "upload_progress_" | PHP_INI_PERDIR | PHP 5.4.0 から利用可能 |
session.upload_progress.name | "PHP_SESSION_UPLOAD_PROGRESS" | PHP_INI_PERDIR | PHP 5.4.0 から利用可能 |
session.upload_progress.freq | "1%" | PHP_INI_PERDIR | PHP 5.4.0 から利用可能 |
session.upload_progress.min_freq | "1" | PHP_INI_PERDIR | PHP 5.4.0 から利用可能 |
session.lazy_write | "1" | PHP_INI_ALL | PHP 7.0.0 から利用可能 |
url_rewriter.tags | "a=href,area=href,frame=src,form=" | PHP_INI_ALL | PHP 7.1.0 以降は、セッションではこの項目を使いません。 |
session.hash_function | "0" | PHP_INI_ALL | PHP 7.1.0 で削除されました。 |
session.hash_bits_per_character | "4" | PHP_INI_ALL | PHP 7.1.0 で削除されました。 |
session.entropy_file | "" | PHP_INI_ALL | PHP 7.1.0 で削除されました。 |
session.entropy_length | "0" | PHP_INI_ALL | PHP 7.1.0 で削除されました。 |
session.bug_compat_42 | "1" | PHP_INI_ALL | PHP 5.4.0 で削除されました。 |
session.bug_compat_warn | "1" | PHP_INI_ALL | PHP 5.4.0 で削除されました。 |
セッション管理システムは、php.iniファイルに記述可能な多くの設定オ プションをサポートします。以下に概要を示します。
session.save_handler
string
session.save_path
string
オプションの引数として 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 より大きくするのは、 それを必要とするような大規模サイトに限るようにしましょう。
注意: PHP 4.3.6 以前では、WindowsユーザーがPHPのsession関数を使用するためには、 この変数を変更する必要があります。c:/temp のような有効なパスを指定するようにしてください。
session.name
string
session.auto_start
boolean
session.serialize_handler
string
session.gc_probability
integer
session.gc_divisor
integer
session.gc_maxlifetime
integer
注意: 異なる値を session.gc_maxlifetime に指定している 別々のスクリプトがセッションデータの保存場所を共有している場合、 一番小さい設定値に達した時点でデータが消去されます。このような場合には、 お互いに session.save_path を使用します。
session.referer_check
string
session.entropy_file
string
注意: PHP 7.1.0 で削除されました。 PHP 5.4.0 以降では、 /dev/urandom あるいは /dev/arandom が使えるときはそれを session.entropy_file のデフォルトとするようになりました。 それまでのバージョンでは、このディレクティブのデフォルトは空でした。
session.entropy_length
integer
session.use_strict_mode
boolean
注意: 一般的なセッションのセキュリティを踏まえると、 session.use_strict_mode を有効にしておく必要があります。 すべてのサイトでこれを有効にすることを推奨します。 詳細は session_create_id() のサンプルコードを参照ください。
注意: 有効期限のタイムスタンプは、サーバーの時刻に基づいて決まります。 クライアントのブラウザの時刻がこれと同じであるとは限りません。
session.cache_limiter
string
session.cache_expire
integer
session.use_trans_sid
boolean
注意: URLに基づくセッション管理は、Cookieに基づくセッション管理と比べ てセキュリティリスクが大きくなります。例えば、ユーザーは、emailに より友人にアクティブなセッションIDを含むURLを送信する可能性があ り、また、ユーザーは自分のブックマークにセッションIDを含むURLを保 存し、常に同じセッションIDで使用するサイトにアクセスする可能性 があります。 PHP 7.1.0 以降では、https://php.net/ のような完全な URL パスが、透過的セッションID機能で扱われるようになります。 これより前のバージョンでは、相対 URL パスだけが対象でした。 リライト対象のホストは session.trans_sid_hosts で定義します。
注意: PHP 7.1.0 より前のバージョンでは、この目的で使われていた設定項目は url_rewriter.tags でした。 PHP 7.1.0 以降は、fieldset が特別なタグとはみなされなくなります。
session.trans_sid_hosts
string
session.bug_compat_42
boolean
注意: PHP 5.4.0 で削除されました。
session.bug_compat_warn
boolean
注意: PHP 5.4.0 で削除されました。
session.sid_length
integer
互換性に関するメモ。 session.hash_func=0 (MD5) で session.hash_bits_per_character=4 の場合、あるいは session.hash_func=1 (SHA1) で session.hash_bits_per_character=6 の場合は 32 を使います。 session.hash_func=0 (MD5) で session.hash_bits_per_character=5 の場合は 26 を使います。 session.hash_func=0 (MD5) で session.hash_bits_per_character=6 の場合は 22 を使います。INI 設定で、セッション ID を少なくとも 128 ビットにしておく必要があります。 session.sid_bits_per_character に適切な値を指定することを忘れないようにしましょう。 そうしないと、脆弱なセッション ID を使うことになってしまいます。
注意: この設定は PHP 7.1.0 で導入されました。
session.sid_bits_per_character
integer
注意: この設定は PHP 7.1.0 で導入されました。
session.hash_function
mixed
PHP 5.3.0 以降では、hash 拡張モジュール の任意のアルゴリズムが (この拡張モジュールが使用可能な場合に) 指定できるようになります。たとえば sha512 や whirlpool などです。 サポートされているアルゴリズムの一覧は、 hash_algos() 関数で取得できます。
注意:
この設定は、PHP 7.1.0 で削除されました。
session.hash_bits_per_character
integer
注意:
この設定は、PHP 7.1.0 で削除されました。
session.upload_progress.enabled
boolean
session.upload_progress.cleanup
boolean
注意: この機能を有効にしておくことを強くおすすめします。
session.upload_progress.prefix
string
session.upload_progress.name
string
session.upload_progress.freq
mixed
session.upload_progress.min_freq
integer
session.lazy_write
boolean
register_globals 設定は、セッション変数の保存および回復方法に影響を与えます。
アップロードの進捗は、 session.upload_progress.enabled を有効にして $_POST[ini_get("session.upload_progress.name")] を設定するまでは登録されません。 この機能の詳細は セッションのアップロードの進捗 を参照ください。