Berechtigungen für die PHP-session-Dateien
Ich habe eine domain domain.com und der subdomain sub.domain.com Diese beiden Domänen haben unterschiedliche ftp-Benutzer (user1, user2) gehören zu der gleichen Gruppe (usergroup) auf linux-Umgebung. Endlich habe ich den gleichen PHP-Anwendung, die Sitzungen auf beiden domains (eine ist Leben und das andere ist testing-Umgebung).
Wenn ich domain.com ohne jetzt erstmal zu sub.domain.com PHP session-Datei wird im Standard Ordner /tmp/mit den richtigen Berechtigungen 600 und user1:usergroup, wenn ich Zugriff sub.domain.com ohne jetzt erstmal zu domain.com wird eine Datei erstellt mit den Berechtigungen 600 und user2:usergroup.
Alle ist ideal für alle Browser, aber IE (bitte nicht den Fokus auf diese). Was ich herausgefunden habe ist, dass wenn ich Zugriff sub.domain.com und dann versuchen domain.com PHP versucht, zum Lesen der gleichen session-Datei hat aber keine Berechtigungen und eine Seite geladen wird, auf unbestimmte Zeit. Wechselnde Besitz der Datei user1 macht domain.com Arbeit, verhindert aber sub.domain.com aus arbeiten.
Wie Apache oder PHP erstellen, verschiedene Dateien für Sitzungen oder zugänglich machen von beiden Domänen aus.
P. S.
Wie ich schon sagte, für einige seltsame Grund dies geschieht nur für den IE und die Fehlermeldung von PHP lautet:
Nicht abgefangene PHP-Fehler: session_start() [function.session-start]: open(/tmp/sess_t1..., O_RDWR) failed: Permission denied (13) in der Datei xxx.php on line 46
on line on line 46 ist session_start();
Danke für jeden Rat in dieser.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte gerade das gleiche problem. Es scheint sich um ein problem mit dem Apache gibt die session-Daten für IE7 und IE8, aber die meisten wahrscheinlich, weil IE7 und IE8 haben eine falsche Art und Weise der Ankündigung der domain Sie angefordert session-Daten.
Hier ist mein Szenario:
Apache 1.3 mit zwei Domänen, jede hat Ihren eigenen account mit Ihrem eigenen Benutzer:
Hier ist, was passiert bei einem normalen Besuch mit Firefox/Safari/Chrome:
/tmp/
im Besitz des Benutzersmycompanycom
./tmp/
im Besitz von Benutzernobody
.Jedoch, hier ist was passiert, bei einem Besuch mit IE7 und IE8:
/tmp/
im Besitz des Benutzersmycompanycom
./tmp/
im Besitz des Benutzersnobody
Apache versucht, die Rückkehr der session-Datei mycompany.com.mycompanycom
, so dass der web-server läuft als Benutzernobody
können nicht darauf zugreifen. Berechtigung verweigert wird.War die Lösung, wie andere vorgeschlagen haben, erstellen Sie ein separates Verzeichnis, in
/tmp/
trennen Sie die gespeicherten session-Daten für support.mycompany.com:Fügte ich die folgenden, um eine
.htaccess
Datei in das root-web-Verzeichnis für support.mycompany.com:Und schließlich entfernte ich alle vorhandenen session-Daten in
/tmp/
sicherzustellen, dass der neue Pfad der Sitzung bekommen würde sofort verwendet:... Und das ist es! Jetzt IE7 und IE8 funktionieren.
Ich bin mir ziemlich sicher, dass dieses problem zu tun, wie der IE7 und IE8 Anfrage die session-Daten von Apache. Sie wohl eine der ersten Anfrage die session-Daten für mycompany.com und DANN verlangen die session-Daten für support.mycompany.com obwohl letzteres nur die Domain in der Adressleiste eingegeben.
Nicht sicher, ob dies der beste Ansatz für Ihr problem, aber Sie könnten versuchen, mit PHP speichern in session-Dateien in anderes Verzeichnis für jede domain.
Werfen Sie einen Blick auf session_save_path() Dokumentation.
Halten Sie im Verstand, müssen Sie es VOR dem Beginn der Sitzung.
Im Idealfall sollte einer der ersten Dinge, die Ihr script nicht.
Sind Sie sicher, dass der IE löst das Problem?
Browser keinen direkten Zugriff auf die session-Dateien, die nur PHP (HTTPD) - Prozess hat Zugriff auf die session-Dateien.
Ich sehe nicht, warum ein browser sollte verschiedene Fehlermeldungen in der PHP-log gegen eine andere.
Ich denke, dass du es mit zwei getrennte Fragen.
Eine Lösung ist, fügen Sie diese der .htaccess-Datei für jede subdomain:
Dann sicherstellen, dass jede subdomain hat die Berechtigung zum schreiben in einen eigenen Ordner.