Robert Bienert: open_basedir: Interpretation einer Warnung

Moin!

Mein Webhoster hat nun als Sicherheitsmaßnahme Datei- und Verzeichniszugriffe via open_basedir eingeschränkt, was u.a. zu folgender Warnung führt:

Warning: chdir() [function.chdir]: open_basedir restriction in effect. File(/srv/www/htdocs/web35/html) is not within the allowed path(s): (/srv/www/htdocs/web35/html/:/srv/www/htdocs/web35/phptmp/:/srv/www/htdocs/web35/files/:/srv/www/htdocs/web35/atd/)

Zusammengefasst heißt das doch, dass sich /srv/www/htdocs/web35/html nicht in /srv/www/htdocs/web35/html/ befindet, was ich etwas verwirrend finde, da es sich doch um das selbe Verzeichnis handelt. Oder verstehe ich da open_basedir nicht richtig?

Viele Grüße,
Robert

  1. Hallo Robert,

    Zusammengefasst heißt das doch, dass sich /srv/www/htdocs/web35/html nicht in /srv/www/htdocs/web35/html/ befindet, was ich etwas verwirrend finde, da es sich doch um das selbe Verzeichnis handelt. Oder verstehe ich da open_basedir nicht richtig?

    Ja, denn open_basedir gibt keinen Verzeichnis an, sondern ein Datei-Prefix. Wenn also /srv/www/htdocs/web35/html als open_basedir-Wert eingestellt wäre, könnte ein Script trotzdem noch auf /srv/www/htdocs/web35/htmlfoo/bar.txt zugreifen. Du solltest also einfach den abschließenden Slash hinzufügen, das dürfte dein Problem beheben.

    Schöne Grüße,

    Johannes

    1. Moin Johannes!

      Zusammengefasst heißt das doch, dass sich /srv/www/htdocs/web35/html nicht in /srv/www/htdocs/web35/html/ befindet, was ich etwas verwirrend finde, da es sich doch um das selbe Verzeichnis handelt. Oder verstehe ich da open_basedir nicht richtig?

      Ja, denn open_basedir gibt keinen Verzeichnis an, sondern ein Datei-Prefix. Wenn also /srv/www/htdocs/web35/html als open_basedir-Wert eingestellt wäre, könnte ein Script trotzdem noch auf /srv/www/htdocs/web35/htmlfoo/bar.txt zugreifen.

      Ah, verstehe. Ich hoffe doch, dass PHP auch so schlau™ ist, '..' nicht als Bestandteil eines Dateinamens zuzulassen.

      Du solltest also einfach den abschließenden Slash hinzufügen, das dürfte dein Problem beheben.

      So ist es. Vielen Dank dafür!

      Schönen Sonntag,
      Robert