Ich habe kürzlich ein Upgrade auf PHP 5.3 durchgeführt und seitdem erhalte ich (sporadische) Fehlermeldungen, die darauf hinweisen, dass Apache (oder möglicherweise der Bereiniger der Sitzungsdateien) keine Berechtigungen für den Ordner hat, in dem die Sitzungen gespeichert sind.
Dies geschieht zufällig und kann nicht mit genauen Schritten reproduziert werden, was mich zu der Vermutung veranlasste, dass es sich um den Sitzungsreiniger handelt.
Hat jemand Erfahrung mit solchen Fehlern?
Die Fehlermeldung (die in der session_start()
Leitung ausgelöst wird) lautet:
ps_files_cleanup_dir: opendir (/ var / lib / php5) fehlgeschlagen: Berechtigung verweigert.
ls -ltr im Sitzungsverzeichnis gibt an:
drwx-wx-wt 2 root root 4096 2010-05-25 12:39 php5
In diesem Verzeichnis werden Sitzungsdateien von www-data angezeigt, bei denen es sich um meinen Apache handelt, und die App funktioniert einwandfrei. Was mich wundert, unter welchem Benutzer der Sitzungs-GC ausgeführt wird?
Antworten:
Das Update: In Ihrem
php.ini
Setsession.gc_probability
zu0
Die Ursache, von der ich glaube, dass ich die Antwort hier gefunden habe http://somethingemporium.com/2007/06/obscure-error-with-php5-on-debian-ubuntu-session-phpini-garbage
Im Wesentlichen ist die Speicherbereinigung so eingerichtet, dass sie auf einigen Systemen (z. B. Ubuntu / Debian) von Cron-Jobs ausgeführt wird. Einige ausführbare PHP-INI-Dateien wie PHP-CLI versuchen ebenfalls, eine Speicherbereinigung durchzuführen, was zu dem Fehler führt, den Sie erhalten haben.
quelle
session.gc_probability
bereits eingestellt0
.session.gc_probability
Trigger auf 1 gesetzt. Dies geschah auch dann, wenn in der php.ini-Datei überhaupt keine Einstellungen vorhanden sind ! Ich verwende suphp unter Ubuntu, Apache 2.2. Ich frage mich, ob das eine Art Fehler ist. Wie auch immer, das Hinzufügensession.gc_probability = 0
zu meiner benutzerdefinierten, ortsspezifischen php.ini-Datei scheint das Problem zu beheben.Dies scheint ein typischer Fehler auf Ubuntu-Servern zu sein (ich verwende Lucid LTS). Die Standardberechtigungen des Verzeichnisses / var / lib / php5 sind vorhanden
Damit es vom Webserver geschrieben, aber nicht gelesen werden kann, erklärt dies vermutlich die Fehler.
Da Ubuntu über cron (
/etc/cron.d/php5
) eine eigene Müllreinigung hat, ist es wahrscheinlich am besten, die Müllsammlung von php zu deaktivieren, wie oben von Diwant Vaidya vorgeschlagen.Es gibt tatsächlich einen Grund, warum der Sitzungsordner nicht weltweit lesbar sein sollte - wie im PHP-Handbuch angegeben :
quelle
Die Lösung, die ich derzeit verwende (von der ich nicht sicher bin, ob sie die richtige ist), besteht darin, dem Apache-Benutzer (in meinem Fall www-Daten) den Besitz des Sitzungsordners zu übertragen.
quelle
Dieses Problem nervt mich schon eine Weile. Ich habe den Wert wie in php.ini vorgeschlagen geändert und das Problem trat immer wieder auf. Ich habe den gleichen Konfigurationswert in meiner index.php und auch in private / Zend / session.php gefunden. Es lohnt sich also, etwas genauer hinzuschauen, wenn das Problem weiterhin auftritt. Ich hoffe das ist nützlich für jemanden.
quelle