Puncte:0

Schimbarea utilizatorului Macos în Apache rupe persistența PHP SESSION

drapel dz

Folosesc serverul Apache încorporat Macos la nivel local pentru dezvoltare. Am dezvoltat un site care folosește PHP și se bazează pe cookie-uri de sesiune pentru a persista sesiunile. Cu configurarea implicită Apache, totul a funcționat bine, iar datele sesiunii au fost păstrate corect.

Pentru ușurința dezvoltării, am vrut să schimb utilizatorul și grupul din Apache cu numele de utilizator și grupul meu. Am făcut asta editând /etc/apache2/httpd.conf, conform instrucțiunilor pe care le-am găsit pe net. Am repornit Apache și totul pare să funcționeze bine - <?php print `whoami` ?> arată numele de utilizator așteptat (al meu.)

CU toate acestea, acum am început să observ că variabila $_SESSION nu mai este persistentă.

Am căutat /etc/php.ini pentru a vedea dacă există o linie care include „_www” (utilizatorul și grupul Apache implicit) crezând că configurația PHP trebuia schimbată și pentru a sincroniza lucrurile. Cu toate acestea, grep nu a returnat niciun rând ca atare.

Știe cineva ce se întâmplă aici și cum să remediez asta?

EDIT: Am verificat ID-urile sesiunii sesiune ID() și a verificat că aceleași ID-uri de sesiune sunt utilizate între pagini.

Chris avatar
drapel it
Ar putea fi o problemă de permisiune în directorul sesiunii. Vedeți ceva în jurnale? Puteți încerca să setați un alt director (`session.save_path` în php.ini)
drapel dz
De fapt, soluția s-a dovedit a fi mai simplă decât atât. Tot ce trebuia să fac a fost să șterg cookie-ul din browserul meu :-) Sugestia dvs. despre problema permisiunilor a dat indicii de care aveam nevoie. Mulțumiri.
Puncte:0
drapel dz

PHP salvează fișierul de sesiune în /var/tmp, de ex. sess_1aas3b0jgjbbsoktg3fcehu5je. Fișierele de sesiune aici au 600 de permisiuni, astfel NUMAI proprietarul le poate citi sau scrie. Browserul salvează cookie-ul de sesiune cu același id. Înainte de a schimba utilizatorul și grupul în configurația Apache, ID-ul sesiunii a fost scris ca _www ca proprietar. După schimbarea utilizatorului și a grupului în configurația Apache, dacă cookie-ul de sesiune era încă viu în browser, îi spunea PHP să acceseze acel id, doar că acum utilizatorul este xyz și nu poate citi sau scrie acel fișier.

Soluția simplă este să ștergeți cookie-ul de sesiune din browser (sau să așteptați până când expiră.) PHP va crea acum un nou fișier de sesiune cu noul proprietar xyz.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.