na serwerze, na którym uruchamiasz aplikację php, pod kątem konkretnej ścieżki musisz sprawdzić za pomocą phpinfo ()
densityx
Odpowiedzi:
168
Lokalizacja $_SESSIONpamięci zmiennych jest określana przez session.save_pathkonfigurację PHP . Zwykle dzieje się to /tmpw systemie Linux / Unix. Użyj tej phpinfo()funkcji, aby wyświetlić określone ustawienia, jeśli nie masz 100% pewności, tworząc plik z następującą zawartością w DocumentRootTwojej domenie:
<?php
phpinfo();?>
Oto link do dokumentacji PHP na temat tego ustawienia konfiguracji:
Jak już wspomniano, zawartość jest przechowywana na serwerze. Jednak sesja jest identyfikowana przez identyfikator sesji, który jest przechowywany u klienta i wysyłany z każdym żądaniem. Zwykle identyfikator sesji jest przechowywany w pliku cookie, ale można go również dołączyć do adresów URL. (To PHPSESSIDparametr zapytania, który czasami widzisz)
+1, ponieważ zasugerowałeś, że pliki cookie nie przechowują zawartości $ _SESSION (te treści są przechowywane na serwerze, więc nie są podatne na modyfikacje przez klienta)
shufler
12
Doskonała odpowiedź! Szukałem pytania: „Dlaczego sesje wygasają po usunięciu pamięci podręcznej przeglądarki?”. I uratowałeś mi dzień.
Uczeń
2
serwer tworzy plik sess_7nu9p0fvidvva6ouaugqcc8292 i po wyświetleniu alertu przeglądarki (getCookie ('PHPSESSID')); // 7nu9p0fvidvva6ouaugqcc8292
zloctb
2
Plus1 - Aby odpowiedzieć na pytanie: „… przechowywane na kliencie lub serwerze?”
Alex Vargas
22
Zazwyczaj są przechowywane na serwerze. Miejsce ich przechowywania zależy od Ciebie jako programisty. Możesz użyć session.save_handlerzmiennej konfiguracyjnej i session_set_save_handlerdo kontrolowania sposobu zapisywania sesji na serwerze. Domyślną metodą zapisywania jest zapisywanie sesji do plików. Miejsce zapisania jest kontrolowane przez session.save_pathzmienną.
Jeden dodatek: należy zauważyć, że w przypadku, gdy „/ tmp” jest katalogiem, w którym przechowywane są dane sesji (co wydaje się być wartością domyślną), sesje nie będą się utrzymywać po ponownym uruchomieniu tego serwera WWW, ponieważ „/ tmp „jest często czyszczony podczas ponownego uruchamiania. Koncepcja trwałości z punktu widzenia klienta obowiązuje wraz z trwałością pamięci masowej na serwerze - co może się nie powieść, jeśli do danych sesji używany jest katalog „/ tmp”.
W Debianie (czy nie dotyczy to większości dystrybucji Linuksa?) Jest on zapisany w / var / lib / php5 /. Jak wspomniano powyżej, jest skonfigurowany w twoim php.ini.
Dzięki, to wszystko, czego chciałem. Tak, gdyby nie było ich w zwykłym miejscu, będę musiał złamać INI, ale chciałem tylko wiedzieć: „Hej, gdzie są zwykle przechowywane sesje ?” / var / lib / php / session / to jest.
Eric L.
7
Jak zauważył pan Taylor, jest to zwykle ustawione w pliku php.ini. Zwykle są przechowywane jako pliki w określonym katalogu.
Większość sesji ustawia klucz użytkownika (nazywany identyfikatorem sesji) na komputerze użytkownika, który wygląda mniej więcej tak: 765487cf34ert8dede5a562e4f3a7e12. Następnie, gdy sesja jest otwierana na innej stronie, skanuje komputer w poszukiwaniu klucza użytkownika i biegnie do serwera, aby pobrać zmienne.
Jeśli omyłkowo wyczyścisz pamięć podręczną, Twój klucz użytkownika również zostanie wyczyszczony. Nie będziesz już mógł pobrać zmiennych z serwera, ponieważ nie znasz swojego identyfikatora.
Wiele z powyższych odpowiedzi jest niejasnych. Moim zdaniem autor tego pytania po prostu chce wiedzieć, gdzie domyślnie przechowywane są zmienne sesji. Zgodnie z tym: https://canvas.seattlecentral.edu/courses/937693/pages/10-advanced-php-sessions są one po prostu domyślnie przechowywane na serwerze . Miejmy nadzieję, że inni uznają ten wkład za znaczący.
Odpowiedzi:
Lokalizacja
$_SESSION
pamięci zmiennych jest określana przezsession.save_path
konfigurację PHP . Zwykle dzieje się to/tmp
w systemie Linux / Unix. Użyj tejphpinfo()
funkcji, aby wyświetlić określone ustawienia, jeśli nie masz 100% pewności, tworząc plik z następującą zawartością wDocumentRoot
Twojej domenie:Oto link do dokumentacji PHP na temat tego ustawienia konfiguracji:
http://php.net/manual/en/session.configuration.php#ini.session.save-path
źródło
Jak już wspomniano, zawartość jest przechowywana na serwerze. Jednak sesja jest identyfikowana przez identyfikator sesji, który jest przechowywany u klienta i wysyłany z każdym żądaniem. Zwykle identyfikator sesji jest przechowywany w pliku cookie, ale można go również dołączyć do adresów URL. (To
PHPSESSID
parametr zapytania, który czasami widzisz)źródło
Zazwyczaj są przechowywane na serwerze. Miejsce ich przechowywania zależy od Ciebie jako programisty. Możesz użyć
session.save_handler
zmiennej konfiguracyjnej isession_set_save_handler
do kontrolowania sposobu zapisywania sesji na serwerze. Domyślną metodą zapisywania jest zapisywanie sesji do plików. Miejsce zapisania jest kontrolowane przezsession.save_path
zmienną.źródło
Jeden dodatek: należy zauważyć, że w przypadku, gdy „/ tmp” jest katalogiem, w którym przechowywane są dane sesji (co wydaje się być wartością domyślną), sesje nie będą się utrzymywać po ponownym uruchomieniu tego serwera WWW, ponieważ „/ tmp „jest często czyszczony podczas ponownego uruchamiania. Koncepcja trwałości z punktu widzenia klienta obowiązuje wraz z trwałością pamięci masowej na serwerze - co może się nie powieść, jeśli do danych sesji używany jest katalog „/ tmp”.
źródło
W Debianie (czy nie dotyczy to większości dystrybucji Linuksa?) Jest on zapisany w / var / lib / php5 /. Jak wspomniano powyżej, jest skonfigurowany w twoim php.ini.
źródło
Używam Ubuntu i moje sesje są przechowywane w / var / lib / php5.
źródło
Jak zauważył pan Taylor, jest to zwykle ustawione w pliku php.ini. Zwykle są przechowywane jako pliki w określonym katalogu.
źródło
W przypadku Ubuntu 16.10 sesje są zapisywane w / var / lib / php / session / ...
źródło
Jak to działa? Skąd wie, że to ja?
Większość sesji ustawia klucz użytkownika (nazywany identyfikatorem sesji) na komputerze użytkownika, który wygląda mniej więcej tak: 765487cf34ert8dede5a562e4f3a7e12. Następnie, gdy sesja jest otwierana na innej stronie, skanuje komputer w poszukiwaniu klucza użytkownika i biegnie do serwera, aby pobrać zmienne.
Jeśli omyłkowo wyczyścisz pamięć podręczną, Twój klucz użytkownika również zostanie wyczyszczony. Nie będziesz już mógł pobrać zmiennych z serwera, ponieważ nie znasz swojego identyfikatora.
źródło
Na moim komputerze z Ubuntu sesje są przechowywane pod adresem
i musisz
sudo ls
w tym katalogu tylkols
to rzuciA na moim serwerze Windows Wamp sesje php są przechowywane w plikach
a jeśli zainstalujesz samodzielny php w systemie Windows, nie ma domyślnej wartości
źródło
Wiele z powyższych odpowiedzi jest niejasnych. Moim zdaniem autor tego pytania po prostu chce wiedzieć, gdzie domyślnie przechowywane są zmienne sesji. Zgodnie z tym: https://canvas.seattlecentral.edu/courses/937693/pages/10-advanced-php-sessions są one po prostu domyślnie przechowywane na serwerze . Miejmy nadzieję, że inni uznają ten wkład za znaczący.
źródło