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


158

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


phpアプリケーションを実行するサーバーで、特定のパスについてphpinfo()を使用して確認する必要があります
densityx

回答:


168

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

<?php
    phpinfo();
?>

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

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


129

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


41
+1は、Cookieが$ _SESSIONのコンテンツを格納しないことを暗示しているため(これらのコンテンツはサーバーに格納されるため、クライアントによる変更に対して脆弱ではありません)
shufler

12
正解です。「ブラウザのキャッシュを削除するとセッションが期限切れになるのはなぜですか?」という質問を探していました。そして、あなたは私の日を救った。
生徒:2013年

2
サーバーがファイルsess_7nu9p0fvidvva6ouaugqcc8292を作成し、ブラウザーのアラート(getCookie( 'PHPSESSID')); // 7nu9p0fvidvva6ouaugqcc8292
zloctb

2
Plus1-質問に答えるために:「...クライアントまたはサーバーに保存されていますか?」
Alex Vargas

22

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


18

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


13

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


12

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


1
ありがとう、それが私が欲しかったすべてです。ええ、通常の場所になかった場合は、INIを解読する必要がありますが、「セッションは通常どこに保存されているのですか?」/ var / lib / php / sessions /です。
Eric L.

7

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



0

どのように機能しますか?それが私であることをどうやって知るのですか?

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

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


0

私のUbuntuマシンのセッションは次の場所に保存されています

/var/lib/php/sessions

そしてあなたはsudo lsこのディレクトリにlsそれを投げるだけです

ls:ディレクトリ '。'を開けません:権限が拒否されました

そして、私のWindows Wampサーバーでは、phpセッションは

C:\wamp64\tmp

Windowsにスタンドアロンのphpをインストールする場合、デフォルトでは値が設定されていません

session.save_path => no value => no value

-1

上記の答えの多くは不透明です。私の意見では、この質問の作成者は、セッション変数がデフォルトで格納されている場所を知りたいだけです。これによると:https://canvas.seattlecentral.edu/courses/937693/pages/10-advanced-php-sessions彼らは単にされ、デフォルトでは、サーバーに保存されています。うまくいけば、他の人がこの貢献に意味があると思うでしょう。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.