2016-10-07 2 views
1

Ich hatte Probleme mit meiner PHP-Website (SuiteCRM) nicht in der Lage, Benutzer zu protokollieren und ich fand es aufgrund nicht in der Lage, auf die Sitzungen Verzeichnis schreiben.PHP session.save_path ignoriert

Ich kann es beheben, indem Sie das Verzeichnis /tmp/php_sessions erstellen und Schreibberechtigungen für den Apache-Benutzer www-data geben. Ich sehe, dass das Verzeichnis mit Dateien gefüllt wird, wenn sich Benutzer einloggen.

Allerdings löscht Ubuntu Xenial mein gesamtes tmp Verzeichnis bei Neustarts, also muss ich es jedes Mal noch einmal wiederholen. Ich entschied mich, meine save_path woanders hin zu verschieben.

Nachdem es in meiner php.ini-Datei und neu zu starten Apache zu ändern, kann ich überprüfen, ob sie durch Ausführen dieses einfache Skripts wirksam sind:

<?php 
    echo ini_get("session.save_path"); 

    phpinfo(); 
?> 

Das zeigt mir eine doppelte Bestätigung des neuen Pfades zuerst echo /var/tmp/php_sessions und dann, in der Mitte aller phpinfo Informationen, die den gleichen Wert wie sowohl Local Value und Master value für die Richtlinie session.save_path.

ABER das Verzeichnis, das PHP verwendet, ist immer noch das erste, /tmp/php_sessions! Es scheint, dass meine Einstellung ignoriert wird.

Habe ich etwas übersehen? Wo könnte diese alte Umgebung begraben werden? Oder wie kann ich das Neue effektiv machen?

(PS - Ich bin nicht ein redis Handler wie in anderen ähnlichen Frage SO verwenden)

+0

Haben Sie die Berechtigung, Ihre 'php.ini' Datei zu bearbeiten? – Abela

+0

Hatten Sie den Sitzungspfad manuell gesetzt? –

+0

Versuchen Sie, den Sitzungspfad manuell mit diesem Code 'ini_set (session.save_path, '/ pfad/zu/Ihrem/Ordner')' einzufügen, setzen Sie diesen Code nach '

Antwort

0

Ok, löste ich mein eigenes Problem und die allgemeine Antwort wie folgt lautet:

Es gibt zwei weitere Dinge, die den Weg zu ändern sein können und müssen überprüft,

  1. der PHP-Code der Anwendung könnte die ini Richtlinie zu ändern, um den Code fürsuchen

  2. Der PHP-Code könnte den session_save_path PHP-Befehl verwenden, um die ini zu überschreiben. Suchen Sie den Code für das auch (und beachten Sie die zwei Unterstrichen _!)

Und die spezifische Antwort für meinen Fall war, dass Suitecrm verwendet session_save_path Befehl seinen Pfad zu setzen mit einem Wert aus der Datei kommenden config.php gefunden im Webstamm. Dort habe ich die alte Einstellung gefunden, und das Ändern hat mein Problem gelöst (hoffentlich).