open_basedir trägt Pfade falsch ein

  • Hallo,

    ich will mir egroupware auf einer Seite einrichten. Ich erhalte städig diese Fehlermeldung:

    Code
    Überprüfe ob der Webserver auf die php.ini Einstellung session.save_path='/var/lib/php5' schreiben kann: 
    /var/lib/php5 existiert nicht!!!
    Sie werden sich NICHT mit PHP Sitzungen in die eGroupWare einlogen: "Ihre Sitzung konnte nicht verifiziert werden" !!!

    mein open_basedir Pfad in der /etc/apache2/sites-available/99_syscp_vhosts.conf bei dem entsprechenden vhost sieht so aus:

    Code
    php_admin_value open_basedir "/var/kunden/webs/kunde002/html/:/tmp/:/var/lib/php5/"

    Da es eigentlich gehn müsste, hab ich mal folgendes versucht:

    Code
    php_admin_value open_basedir "/var/kunden/webs/kunde002/html/:/tmp/:/var/lib/php5"


    (also ohne den Slash am Ende von php5) und siehe da, es klappt!

    Nun wollte ich das im SysCP entsprechend bei (Server)->"Einstellungen"->(Webservereinstellungen)->"Konfiguration"->"An OpenBasedir anzuhängende Pfade:" eintragen:

    Code
    /tmp/:/var/lib/php5

    Aber immer nach dem Speichern steht wieder

    Code
    /tmp/:/var/lib/php5[B][COLOR=Red]/[/COLOR][/B]


    da.

    Das heißt ich kann es nur in der Datenbank direkt ändern, aber dann muss ich das jedesmal erneut machen, wenn ich diese Seite speichere.

    Oder wie ist der Standard im openbasedir; mit Slash am Ende vom Verzeichnis oder ohne?

    weiß jemand dazu Rat?

    mfg Benny

  • Okay, hab die gesucht aber leider bin ich nicht fündig geworden... Ich werd wohl erstmal mit der Datenbank Variante leben müssen. Für den Fall es gibt hier jemanden findigen, der weiß wo genau man welche Änderung im Code machen muss, währe ich sehr, sehr dankbar ;)

    (ich hatte verschiedene Stellen gefunden, aber letztlich ists wie die Nadel im Heuhaufen suchen, wenn man nicht genau weiß was man tut...)

  • Eigentlich wäre es ohne Slash ja korrekter, dem System sollte das aber egal sein, genauso kannst du 5 Slash's bei Pfadangaben machen, sollte nichts machen. Um zu deinem eigentlichen Problem zurückzukommen: session.save_path ist bei meiner php.ini auskommentiert und macht keine Probleme. Diese Fehlermeldung hat übrigens nichts mit dem open_basedir Pfad zu tun, es steht doch: "/var/lib/php5 existiert nicht!!!"

    Überprüfe einmal, ob es diesen Ordner wirklich gibt und ob der Webserver darauf auch Schreibrechte hat ;)


    MfG Christian

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

  • naja, jedenfalls läßt sich genau mit ohne dem Slash das Problem beseitigen. Und wenn ich genau diesen Slash wieder drann schreibe, hab ich den Fehler wieder. Das hab ich einige Male ausprobiert, bzw. dadurch, dass SysCP ja die Config Datei neu geschrieben hatte (weil ich andere Änderungen vorgenommen hatte), war der Slash wieder drann - und schwups hatte ich den Fehler wieder :(

    Also offensichtlich war das mit dem Slash entfernen jedenfalls auch ne mögliche (wenn auch evtl. unsaubere) Lösung.

    Ich werd jetzt mal den Slash wieder anhängen und das session.save_path deaktivieren (und mir dann mal anschauen, was das genau ist - bin noch nicht so bewandert mit den ganzen Konfigurationsmöglichkeiten...)

    [EDIT]
    Ich seh grad, dass bei mir diese Zeile ebenfalls auskommentiert ist und auch sonst nirgendwo eine Option session.save_path aktiviert auftaucht (also jedenfalls nicht in der /etc/php5/apache2/php.ini und /etc/apache2/apache2.conf oder /etc/apache2/sites-enabled/*)

  • Hey Christian,

    Zitat von killerbees19;2488

    Eigentlich wäre es ohne Slash ja korrekter, dem System sollte das aber egal sein, genauso kannst du 5 Slash's bei Pfadangaben machen, sollte nichts machen.

    nein, das ist nicht egal. Ich Zitiere mal von http://support.living-e.de/de/server/index.php?categorieID=78&we_objectID=71 :

    Zitat

    Bei diesem Parameter wird einfach nur bei jedem Dateizugriff aus einem PHP script geprüft, ob sich der angegebene Pfad am Anfang des zu öffnenden Dateipfad befindet. Daher ist es wichtig ob sich am Ende ein "/" befindet oder nicht. Folgende Beispiele sollen dies verdeutlichen:

    open_basedir = /srv/www/htdocs/web12

    Erlaubt den Zugriff auf alle Dateien in diesem Ordner, genauso aber auf Dateien in den Ordnern /srv/www/htdocs/web123 und /srv/www/htdocs/web19423/unterordner.

    open_basedir = /srv/www/htdocs/web12/

    Erlaubt den Zugriff nur auf Dateien innerhalb von diesem Ordner, allerdings wird es gleichzeitig unmöglich eine Dateiliste des Ordners "web12" zu erhalten oder dessen Eigenschaften auszulesen, da in diesem Fall der Ordner selber (/srv/www/htdocs/web12) geöffnet werden muss und (durch den endenden "/" im open_basedir Parameter) dies nicht erlaubt ist. (open_basedir Wert ist nicht im zu öffnenden Dateipfad enthalten).

    Aus diesem Grund lag meine Website komplett brach. Hat mich mehrere Stunden gekostet, bis ich da drauf gekommen bin. Cron Job von SysCP weg, manuell geändert, alles tutti. :)