it-swarm.com.de

Wie kann ich den Berechtigungsfehler beheben, wenn ich session_start () aufrufe?

als ich das Skript auf den Server hochgeladen habe, ist dieser Fehler aufgetreten

Warnung: Unbekannt: Öffnen (/ tmp/sess_58f54ee6a828f04116c2ed97664497b2, O_RDWR) fehlgeschlagen: Berechtigung verweigert (13) in Unbekannt in Zeile 0

Warnung: Unbekannt: Fehler beim Schreiben der Sitzungsdaten (Dateien). Stellen Sie sicher, dass die aktuelle Einstellung von session.save_path (/ tmp) in Unknown in Zeile 0 korrekt ist

der Fehler trat auf, als ich session_start(); aufrief, obwohl ich die Berechtigung des Ordners/tmp auf 777 gesetzt habe.

21

Ändern Sie den Sitzungspfad, in den Sie Daten schreiben können, oder wenden Sie sich an den Serveradministrator, um das Problem/tmp zu ermitteln

http://php.net/manual/de/function.session-save-path.php

25
Tadas Šubonis

sie müssen Ihre session.save_path php.ini -Direktive ändern

Sie können dies mit session_save_path tun

9
German Rumm

Wenn Sie über einen SSH-Zugriff verfügen, erfahren Sie hier, wie Sie die Berechtigung und den Besitz korrigieren

Sudo chown -R NAME_OF_USER /tmp

Ersetzen Sie NAME_OF_USER durch den Benutzer, unter dem PHP ausgeführt wird. Sie können es finden, indem Sie einfach diese Zeilen in eine PHP-Datei einfügen:

$processUser = posix_getpwuid(posix_geteuid());
print $processUser['name'];
exit;
6
pixeline

Darüber hinaus möchten Sie möglicherweise ini_set('session.save_path', '/dir/here'); verwenden, sofern Sie Zugriff auf diese Funktion haben. Die anderen vorgeschlagenen Wege sind gültig.

3
Norm

Mir ist klar, dass dies ein alter Beitrag ist, aber ich bin einfach auf dieses Problem gestoßen und habe eine einfache Lösung gefunden.

Für mich war das Problem mit einer meiner lokal installierten Websites. Ich hatte nicht versucht, mit anderen Browsern auf die Websites zuzugreifen. Dies geschah jedoch jedes Mal, wenn ich versuchte, über Chrome auf diese Website zuzugreifen. Ich entschied mich für die Chrome-Entwicklertools auf der Registerkarte "Anwendung" - und auf "Speicher löschen". Voila - alles funktioniert wieder wie von Zauberhand. 

Hoffe das hilft jemand anderem!

2
Whipenstein

Ich hatte gerade genau das gleiche Problem mit einem meiner PHP Skripte und ich dachte mir, was habe ich kaputt gemacht, weil es am Tag vorher perfekt funktionierte und ich es von meinem eigenen lokalen Welpen-Linux-Rechner aus laufen lasse Es ist also nicht einmal ein Host oder irgendetwas.

Das einzige, was ich vorher gemacht hatte, war der Versuch, Java dazu zu bringen, im Webbrowser zu funktionieren. Ich hatte also etwas geschafft, Java zum Laufen zu bringen, aber PHP - oops!

Ich erinnerte mich jedoch daran, dass ich beim Versuch, Java zum Laufen zu bringen, den Inhalt des/tmp-Ordners gelöscht hatte, um alles zu löschen, was ein Problem verursachen könnte (es stellte sich bei Java heraus, dass ich das alte Plugin oij mit dem neuen Firefox verwendete) )

Um dieses Problem zu lösen, habe ich Rox File Manager geöffnet, zum Ordner/gewechselt und mit der rechten Maustaste auf den tmp folder -> Mount Point 'tmp' and clicked properties geklickt.

Ich bemerkte, dass die Berechtigungen als Besitzer festgelegt waren - Lesen, Schreiben, Ausführen, aber Gruppe und Welt waren nur auf Lesen und Ausführen und nicht Schreiben festgelegt. Ich habe in Write sowohl für Group als auch World einen Haken gesetzt, und jetzt funktioniert PHP wieder einwandfrei.

Ich weiß nicht, an welchem ​​Punkt sich die Berechtigungen für tmp geändert haben müssen, aber für PHP müssen sie mit Schreibberechtigungen eingerichtet sein.

2
user1784974

Ich hatte dieses Problem in der folgenden Situation:

  1. Ich habe einige Session-Variablen mit PHP gefüllt
  2. Während die Sitzung noch aktiv war, habe ich auf meinem Host von PHP 5.4 auf 5.3 geändert.
  3. Beim erneuten Laden der Seite wurde der oben beschriebene Fehler angezeigt.
  4. Setzen Sie die PHP-Version erneut auf 5.4 zurück.
  5. Benutztes session_unset (); und session_destroy (); die aktuelle Sitzung bereinigen.
  6. Die Version von PHP wurde auf 5.3 zurückgesetzt.
  7. Jetzt geht es wieder.

Fazit: Aus einem irrelevanten Grund musste ich meine PHP-Version ändern, und beim Wechseln mit Sitzungen werden die Sitzungen beschädigt.

2
Erwin Okken

Stellen Sie sicher, dass keine Probleme mit dem Festplattenspeicher auftreten. Wenn alle Berechtigungen korrekt sind (und 777 dies für Sie tun sollte), erhalten Sie möglicherweise immer noch diesen Fehler (für einige Versionen von PHP und Apache), wenn nicht genügend Speicherplatz zum Schreiben vorhanden ist Platte.

2
Haz

Ich habe das gleiche Problem der Erlaubnis, aber auf/var/lib/php/session /.

Um dies zu beheben, lösche ich die Datei und starte php-fpm neu.

rm -rf /var/lib/php/session/sess_p930fh0ejjkeeiaes3l4395q96
Sudo service php5.6-fpm restart

Jetzt funktioniert alles gut.

2
oussaka

Fügen Sie folgende Zeile hinzu

ini_set('session.save_path', getcwd() . '/tmp');

vor 

session_start(); 
1
Ozan Olmez

Ob :

  • session.gc_probability> 0
  • sitzungsdateien werden von verschiedenen Benutzern erstellt (z. B. root und Apache).
  • sitzungsdateien werden alle am selben Ort gespeichert (z. B./var/lib/php/session)

Dann wird dieser Fehler angezeigt, wenn z. Der Apache-Prozess PHP versucht, die Garbage-Collection für die Sitzungsdateien auszuführen.

Fixes:

  1. Rekonfigurieren Sie PHP, so dass gc_probability 0 ist, und führen Sie einen cron-Job aus, um die alten/veralteten Dateien zu entfernen.
  2. Lassen Sie die verschiedenen Sitzungsdateien für jeden Benutzer an einem anderen Ort speichern (session_save_path () usw.).
1
David Goodwin

wenn Sie den Webserver Apache verwenden, können Sie zur Befehlszeile schnell die Befehlszeile eingeben und Folgendes eingeben:

open /etc/Apache2/

Öffnen Sie dann im geöffneten Fenster die Datei mit dem Namen httpd.conf und suchen Sie nach User oder Group. Ändern Sie diese beiden Zeilen in:

User  _www
Group _www

Der Grund hierfür ist, dass Sie möchten, dass Ihr Server die Berechtigung für Ihre Systemverzeichnisse hat. Insbesondere möchten Sie die User ändern, oder Sie können Ihre Group entweder staff oder admin belassen.

1
Hassan Azimi

Ich hatte anfangs dieses Problem, weil nginx den/tmp-Speicherort hatte und php-fpm aufgrund der www.conf unter 'Apache' Benutzer und Gruppe ausgeführt wurde. Ich habe den Benutzer/die Gruppe in dieser Datei ausgetauscht und dann hat es funktioniert. Möglicherweise möchten Sie <?php echo exec('whoami'); ?> zur Bestätigung überprüfen.

0
Mark

Mit PHP 5.6 hatte ich bereits session_save_path () verwendet, um auf ein Verzeichnis innerhalb der Domänenstruktur zu verweisen. Es hat gut funktioniert, bis ich ein Upgrade auf PHP 7.0 vorgenommen habe. Zu diesem Zeitpunkt erhielt ich den gemeldeten Fehler. Bei PHP.net habe ich einige Kommentare gefunden, die darauf hindeuteten, einen direkten Pfad zuzuweisen, nicht immer, daher habe ich ihren Vorschlag verwendet.

session_save_path(realpath(dirname($_SERVER['DOCUMENT_ROOT']) . '/../session'));

hat perfekt funktioniert. Denken Sie daran, /../session in den relativen Speicherort Ihres aktuellen Sitzungsverzeichnisses zu ändern.

0
JBH

Für mich scheint das Problem ein WHM-Bug zu sein! Ich habe ein paar Add-on-Domains und alle funktionieren gut, aber mit einer Subdomain bringt es diesen Fehler.

Merkwürdige Sache, aber wenn ich die vollständige URL mit der Hauptdomäne verwende, funktioniert es gut:

main-domain.com/my.subdomain.com

Wenn ich die Subdomain direkt verwende, wird "Permission denied (13)" angezeigt:

my.subdomain.com

Die Sache ist, dass alle Addon Domains root ist:

/ home/xx /

Aber für meine Subdomain weiß ich nicht warum, die Wurzel lautet: (Ich sollte keinen Zugriff auf dieses Verzeichnis haben)

/

Also versucht es wirklich zu erreichen:/tmp statt/home/xx/tmp

Die auch existiert, aber nicht die richtigen Berechtigungen haben

Um dies zu verdeutlichen, gibt es Beispiele für den gesamten Pfad:

/ home/mein-konto/public_html

/ home/mein-konto/tmp

/ tmp

Die Problemumgehung, die ich verwendete, war: 

session_save_path ('/ home/mein-Konto/tmp');

session_start ();

0
ebelendez