Auf dem Server, auf dem Sie die PHP-Anwendung ausführen, müssen Sie für einen bestimmten Pfad mit phpinfo ()
Densityx
Antworten:
168
Der Speicherort des $_SESSIONvariablen Speichers wird durch die session.save_pathKonfiguration von PHP bestimmt . Normalerweise ist dies /tmpauf einem Linux / Unix-System. Verwenden Sie die phpinfo()Funktion, um Ihre speziellen Einstellungen anzuzeigen, wenn Sie nicht 100% sicher sind, indem Sie eine Datei mit diesem Inhalt in DocumentRootIhrer Domain erstellen :
<?php
phpinfo();?>
Hier ist der Link zur PHP-Dokumentation zu dieser Konfigurationseinstellung:
Wie bereits erwähnt, werden die Inhalte auf dem Server gespeichert. Die Sitzung wird jedoch durch eine Sitzungs-ID identifiziert, die auf dem Client gespeichert und bei jeder Anforderung gesendet wird. Normalerweise wird die Sitzungs-ID in einem Cookie gespeichert, sie kann jedoch auch an URLs angehängt werden. (Das ist der PHPSESSIDAbfrageparameter, den Sie manchmal sehen)
+1, weil Sie impliziert haben, dass Cookies den Inhalt von $ _SESSION nicht speichern (diese Inhalte werden auf dem Server gespeichert, sind also nicht anfällig für Änderungen durch den Client)
Shufler
12
Hervorragende Antwort! Ich habe nach der Frage gesucht: "Warum laufen Sitzungen nach dem Löschen des Browser-Cache ab?". Und du hast meinen Tag gerettet.
Schüler
2
Server erstellen Datei sess_7nu9p0fvidvva6ouaugqcc8292 und auf Browser-Warnung (getCookie ('PHPSESSID')); // 7nu9p0fvidvva6ouaugqcc8292
zloctb
2
Plus1 - Zur Beantwortung der Frage: "... auf dem Client oder Server gespeichert?"
Alex Vargas
22
Sie werden normalerweise auf dem Server gespeichert. Wo sie gespeichert sind, liegt bei Ihnen als Entwickler. Mit der session.save_handlerKonfigurationsvariablen und können Sie session_set_save_handlersteuern, wie Sitzungen auf dem Server gespeichert werden. Die Standard-Speichermethode ist das Speichern von Sitzungen in Dateien. Wo sie gespeichert werden, wird von der session.save_pathVariablen gesteuert .
Ein Zusatz: Es sollte beachtet werden, dass, falls "/ tmp" das Verzeichnis ist, in dem die Sitzungsdaten gespeichert sind (was der Standardwert zu sein scheint), die Sitzungen nach dem Neustart dieses Webservers nicht als "/ tmp" bestehen bleiben "wird beim Neustart häufig gelöscht. Das Konzept einer clientweisen Persistenz steht und fällt mit der Persistenz des Speichers auf dem Server - was fehlschlagen kann, wenn das Verzeichnis "/ tmp" für Sitzungsdaten verwendet wird.
Unter Debian (ist dies bei den meisten Linux-Distributionen nicht der Fall?) Wird es in / var / lib / php5 / gespeichert. Wie oben erwähnt, ist es in Ihrer php.ini konfiguriert.
Danke, das ist alles was ich wollte. Ja, wenn sie nicht an der üblichen Stelle wären, müsste ich die INIs aufbrechen, aber ich wollte nur wissen: "Hey, wo werden die Sitzungen normalerweise gespeichert?" / var / lib / php / session / es ist.
Eric L.
7
Wie Mr. Taylor betonte, wird dies normalerweise in php.ini eingestellt. Normalerweise werden sie als Dateien in einem bestimmten Verzeichnis gespeichert.
Wie funktioniert es? Woher weiß es, dass ich es bin?
In den meisten Sitzungen wird auf dem Computer des Benutzers ein Benutzerschlüssel (als Sitzungs-ID bezeichnet) festgelegt, der ungefähr so aussieht: 765487cf34ert8dede5a562e4f3a7e12. Wenn eine Sitzung auf einer anderen Seite geöffnet wird, durchsucht sie den Computer nach einem Benutzerschlüssel und wird zum Server ausgeführt, um Ihre Variablen abzurufen.
Wenn Sie versehentlich den Cache leeren, wird auch Ihr Benutzerschlüssel gelöscht. Sie können Ihre Variablen nicht mehr vom Server abrufen, da Sie Ihre ID nicht kennen.
Viele der obigen Antworten sind undurchsichtig. Meiner Meinung nach möchte der Autor dieser Frage nur wissen, wo Sitzungsvariablen standardmäßig gespeichert sind. Demnach: https://canvas.seattlecentral.edu/courses/937693/pages/10-advanced-php-sessions werden sie einfach standardmäßig auf dem Server gespeichert . Hoffentlich finden andere diesen Beitrag sinnvoll.
Antworten:
Der Speicherort des
$_SESSION
variablen Speichers wird durch diesession.save_path
Konfiguration von PHP bestimmt . Normalerweise ist dies/tmp
auf einem Linux / Unix-System. Verwenden Sie diephpinfo()
Funktion, um Ihre speziellen Einstellungen anzuzeigen, wenn Sie nicht 100% sicher sind, indem Sie eine Datei mit diesem Inhalt inDocumentRoot
Ihrer Domain erstellen :Hier ist der Link zur PHP-Dokumentation zu dieser Konfigurationseinstellung:
http://php.net/manual/en/session.configuration.php#ini.session.save-path
quelle
Wie bereits erwähnt, werden die Inhalte auf dem Server gespeichert. Die Sitzung wird jedoch durch eine Sitzungs-ID identifiziert, die auf dem Client gespeichert und bei jeder Anforderung gesendet wird. Normalerweise wird die Sitzungs-ID in einem Cookie gespeichert, sie kann jedoch auch an URLs angehängt werden. (Das ist der
PHPSESSID
Abfrageparameter, den Sie manchmal sehen)quelle
Sie werden normalerweise auf dem Server gespeichert. Wo sie gespeichert sind, liegt bei Ihnen als Entwickler. Mit der
session.save_handler
Konfigurationsvariablen und können Siesession_set_save_handler
steuern, wie Sitzungen auf dem Server gespeichert werden. Die Standard-Speichermethode ist das Speichern von Sitzungen in Dateien. Wo sie gespeichert werden, wird von dersession.save_path
Variablen gesteuert .quelle
Ein Zusatz: Es sollte beachtet werden, dass, falls "/ tmp" das Verzeichnis ist, in dem die Sitzungsdaten gespeichert sind (was der Standardwert zu sein scheint), die Sitzungen nach dem Neustart dieses Webservers nicht als "/ tmp" bestehen bleiben "wird beim Neustart häufig gelöscht. Das Konzept einer clientweisen Persistenz steht und fällt mit der Persistenz des Speichers auf dem Server - was fehlschlagen kann, wenn das Verzeichnis "/ tmp" für Sitzungsdaten verwendet wird.
quelle
Unter Debian (ist dies bei den meisten Linux-Distributionen nicht der Fall?) Wird es in / var / lib / php5 / gespeichert. Wie oben erwähnt, ist es in Ihrer php.ini konfiguriert.
quelle
Ich benutze Ubuntu und meine Sitzungen sind in / var / lib / php5 gespeichert.
quelle
Wie Mr. Taylor betonte, wird dies normalerweise in php.ini eingestellt. Normalerweise werden sie als Dateien in einem bestimmten Verzeichnis gespeichert.
quelle
Für Ubuntu 16.10 werden Sitzungen in / var / lib / php / session / ... gespeichert.
quelle
Wie funktioniert es? Woher weiß es, dass ich es bin?
In den meisten Sitzungen wird auf dem Computer des Benutzers ein Benutzerschlüssel (als Sitzungs-ID bezeichnet) festgelegt, der ungefähr so aussieht: 765487cf34ert8dede5a562e4f3a7e12. Wenn eine Sitzung auf einer anderen Seite geöffnet wird, durchsucht sie den Computer nach einem Benutzerschlüssel und wird zum Server ausgeführt, um Ihre Variablen abzurufen.
Wenn Sie versehentlich den Cache leeren, wird auch Ihr Benutzerschlüssel gelöscht. Sie können Ihre Variablen nicht mehr vom Server abrufen, da Sie Ihre ID nicht kennen.
quelle
In meiner Ubuntu-Maschine werden Sitzungen bei gespeichert
und du musst
sudo ls
in dieses Verzeichnis nurls
werfenUnd auf meinem Windows Wamp Server werden PHP-Sitzungen in gespeichert
und wenn Sie eigenständiges PHP unter Windows installieren, ist standardmäßig kein Wert festgelegt
quelle
Viele der obigen Antworten sind undurchsichtig. Meiner Meinung nach möchte der Autor dieser Frage nur wissen, wo Sitzungsvariablen standardmäßig gespeichert sind. Demnach: https://canvas.seattlecentral.edu/courses/937693/pages/10-advanced-php-sessions werden sie einfach standardmäßig auf dem Server gespeichert . Hoffentlich finden andere diesen Beitrag sinnvoll.
quelle