web-dev-qa-db-ja.com

$ _SESSION変数はどこに保存されますか?

$_SESSION変数はクライアントまたはサーバーに保存されていますか?

152
Steve Gattuso

$_SESSION変数ストレージの場所は、PHPのsession.save_path構成によって決まります。通常、これはLinux/Unixシステムでは/tmpです。 phpinfo()関数を使用して、ドメインのDocumentRootにこのコンテンツを含むファイルを作成することにより、100%確実でない場合に特定の設定を表示します。

<?php
    phpinfo();
?>

この構成設定に関するPHPドキュメントへのリンクは次のとおりです。

http://php.net/manual/en/session.configuration.php#ini.session.save-path

157
rjamestaylor

すでに述べたように、コンテンツはサーバーに保存されます。ただし、セッションはセッションIDによって識別されます。セッションIDはクライアントに保存され、各リクエストとともに送信されます。通常、セッションIDはCookieに保存されますが、URLに追加することもできます。 (これは、時々表示されるPHPSESSIDクエリパラメーターです)

125
troelskn

通常、これらはサーバーに保存されます。それらが保存される場所は、開発者としてあなた次第です。 session.save_handler構成変数と session_set_save_handler を使用して、サーバーにセッションを保存する方法を制御できます。デフォルトの保存方法は、セッションをファイルに保存することです。それらが保存される場所は、session.save_path変数によって制御されます。

22
Rob Kennedy

1つの追加:「/ tmp」がセッションデータが保存されているディレクトリ(デフォルト値と思われる)の場合、「/ tmp」として、そのWebサーバーの再起動後にセッションは持続しないことに注意してください。多くの場合、再起動中に削除されます。クライアント単位の永続性の概念は、サーバー上のストレージの永続性に依存します。「/ tmp」ディレクトリがセッションデータに使用されている場合、これは失敗する可能性があります。

18
Gero

Ubuntuを使用しており、セッションは/ var/lib/php5に保存されています。

12
Vasyl Teraz

Debianでは(これはほとんどのLinuxディストリビューションに当てはまりませんか?)、/ var/lib/php5 /に保存されます。上記のように、php.iniで設定されます。

12
Hans

テイラー氏が指摘したように、これは通常php.iniで設定されます。通常、これらは特定のディレクトリにファイルとして保存されます。

7
Brian Fisher

Ubuntu 16.10の場合、セッションは/ var/lib/php/session/...に保存されます.

4
Lukáš Kříž

どのように機能しますか?私だとどうしてわかるの?

ほとんどのセッションは、ユーザーのコンピューターに765487cf34ert8dede5a562e4f3a7e12のようなユーザーキー(sessionidと呼ばれる)を設定します。次に、別のページでセッションが開かれると、コンピューターでユーザーキーをスキャンし、サーバーに実行して変数を取得します。

誤ってキャッシュをクリアすると、ユーザーキーもクリアされます。 IDがわからないため、サーバーから変数を取得できなくなります。

1
Emeka Obianom