session.save_path not writable

  • Ich habe folgendes Problem:


    Ich möchte auf meinem vserver ein php-install script starten (gallery2), dass session.save_path verwenden möchte. Ich bekomme aber folgende Fehlermeldung:


    "Fatal Warning -- *session.save_path* must be set to a valid directory and be writable by the web server user"


    "php5 -i|grep session.save_path" liefert "session.save_path => /var/lib/php5 => /var/lib/php5"


    ls -l in "var/lib" liefert
    "drwxrwxrwx 2 root root 4096 2009-02-24 20:09 php5"


    Offensichtlich kann dennoch nicht nach /var/lib/php5 geschrieben werden. Ist hier etwas speziell zu beachten?


    Ich bin Anfänger, ein grundlegende Fehler ist also denkbar.


    Bin für jede Hilfe dankbar!

  • Wie sieht es mit den Rechten der Ordner /var und /var/lib aus? Vielleicht scheitert es daran, dass der Apache gar nicht erst in /var/lib reinkommt. Die Rechte für /var/lib/php5 sind bei mir drwx-wx-wt, wobei ich das "t" noch nie vorher gesehen habe... könnte vielleicht für "temporary" stehen oder so.

  • Zitat von Robert;3052

    wobei ich das "t" noch nie vorher gesehen habe... könnte vielleicht für "temporary" stehen oder so.


    Das T/t steht für den letzten Bit "Sticky" (The user may delete or modify only those files in the directory that they own or have write permission for.) bzw. für eine Kombination aus Sticky und Ausführen:


    http://www.happytec.at/tools/chmod.php?chmod=1000 (T)
    http://www.happytec.at/tools/chmod.php?chmod=1001 (t)



    MfG Christian

    "Wer nur noch Enten sieht, hat die Kontrolle über seine Server verloren." (Netzentenfund)

  • Da die Verzeichnisrechte zu stimmen scheinen, können auch zwei andere Fehlerursachen in Betracht kommen:


    1. Mit

    Code
    php5 -i|grep session.save_path


    erhälst Du die Konfiguration des PHP-Interpreters auf der Konsole. Die richtige Konfiguration des als Modul oder CGI vom Apache gestarteten PHP zeigt Dir folgende kleine PHP-Datei an:

    PHP
    <?PHP
    phpinfo ();
    ?>

    2. Wenn der Safemode in PHP aktiviert ist, kann Dein Skript nicht auf Verzeichnisse, die über ihm liegen, zugreifen.

  • christian:
    Ah, wieder was gelernt. :)


    Eigentlich sollte das Skript nicht selbst auf diesen Pfad zugreifen, sondern wird die Funktion session_start() verwenden. Wäre ungünstig, wenn man dafür den Safemode oder open_basedir deaktivieren müsste, also würde ich das Problem woanders vermuten - z.B. eben bei den Rechten von /var und /var/lib. Der Safemode muss aber laut Voraussetzungen sowieso deaktiviert sein.

  • Der Teil "must be set to a valid directory" war hier der entscheidende Hinweis.


    Tatsächlich musste ich den session.save_path in den Baum des ausführenden scripts legen. Hier bin ich durch die Fehlermeldung etwas in die Irre geführt worden.


    Vielen Dank für die schnellen Antworten zum Thema!