Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Znikające sesje
Forum PHP.pl > Forum > Przedszkole
othnm86
Witam serdecznie. Próbuję stworzyć prosty system logowania oparty na sesjach. Jednakże sesje nie chcą się "trzymać".
Aby wykluczyć, że jakiś błąd powoduje część kodu odpowiedzialna za sprawdzanie użytkownika w bazie, wrzuciłem na serwer takie dwa skrypty:
  1. <?
  2. $_SESSION['test']="Testowy";
  3. echo 'Session path "'.session_save_path().'" is not writable for PHP!';
  4. } else {
  5. echo 'Session path "'.session_save_path().'" is writable for PHP!';
  6. }
  7. var_dump($_SESSION);
  8. ?>

Zwraca
  1.  
  2. Session path "/var/lib/php/session" is writable for PHP!
  3. array(1) { ["test"]=> string(7) "Testowy" }

  1. <?
  2. echo 'Session path "'.session_save_path().'" is not writable for PHP!';
  3. } else {
  4. echo 'Session path "'.session_save_path().'" is writable for PHP!';
  5. }
  6. var_dump($_SESSION);
  7. ?>

Zwraca
  1. Session path "/var/lib/php/session" is writable for PHP!
  2. array(0) { }


Próbowałem dodać polecenia ob_start() i inne rzeczy, które były opisane zarówno na tym forum i kilkunastu innych, które wypluło mi google.

Parametry serwera:
nginx/1.0.15
php-fpm 5.3.3
nospor
Wlacz wyswietlanie wszystkich bledow, a byc moze zobaczysz blad. TU masz napisane jak
Temat: Jak poprawnie zada pytanie
-othnm86-
Nic się nie ujawnia. Oprócz gdy np. w drugim pliku odwołam się do $_SESSION['test'] bez sprawdzenia czy istnieje, to wyrzuca:

Kod
Notice: Undefined index: test in /home/strona/www/sess2.php on line 10

To wszystko.
nospor
A dales error_reporting na samiuskim poczatku jeszcze przed session_start?
--othnm86--
Wcześniej nie, ale teraz dałem przed session_start() i nic się nie zmieniło.
nospor
To dla pewnosci, ze zrobiles jak trzeba, pokaz kod po zmianach smile.gif
---othnm86---
  1. <?
  2. ini_set('display_errors','1');
  3. $_SESSION['test']="Witam";
  4. echo 'Session path "'.session_save_path().'" is not writable for PHP!';
  5. } else {
  6. echo 'Session path "'.session_save_path().'" is writable for PHP!';
  7. }
  8. echo $_SESSION['test']; //tu zwraca wyświetla prawidłowo
  9. var_dump($_SESSION);
  10. ?>

Drugi plik:
  1. <?
  2. ini_set('display_errors','1');
  3. echo 'Session path "'.session_save_path().'" is not writable for PHP!';
  4. } else {
  5. echo 'Session path "'.session_save_path().'" is writable for PHP!';
  6. }
  7. echo $_SESSION['test']; //zwraca notice
  8. var_dump($_SESSION);
  9. ?>


Co do raportowania błędów w php.ini mam:
Kod
error_reporting = E_ALL & ~E_DEPRECATED
display_errors = On


Dziękuję bardzo za pomoc.
nospor
Czyli to nie sprawka BOM ani niczego podobnego.....

A oba pliki masz w tej samej domenie? Przegladarka zaklada ci poprawnie ciastka sesyjne? Bo zakladam, ze oba pliki odpalasz na tej samej przegladarce a nie na dwoch roznych smile.gif
othnm86
Tak dokładnie. W logowaniu był tylko jeszcze kod sprawdzający w sql i redirect. Ta sama domena.
Próbowałem także utworzyć katalog /home/strona/www/tmp i nadać prawa do zapisu dla nginksa, ale wynik był ten sam. (oczywiście zmieniłem session_save_path() i zrestartowałem nginx oraz php-fpm.

Coś dziwnego teraz zauważyłem, mam phpMyAdmina w podkatalogu mysql-admin i on działa bez zarzutów, a przecież chyba też wykorzystuje sesje?

Wrzuciłem te skrypty na inny serwer - na Business Home.pl i działa...
Serwer różni się tym że jest na apache i ma php w wer 5.2.17
Natomiast mój serwer ma nginx i php w wer 5.3.3

Dziwnie to zabrzmi, wywaliłem php.ini i działa wink.gif
Tylko nie mogę w necie, ani źródłach php znaleść domyślnego pliku z ustawieniami?!
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.