phpbar.de logo

Mailinglisten-Archive

[php] Open basedir restriction / Safe mode

[php] Open basedir restriction / Safe mode

Sebastian Tobias Mendel genannt Mendelsohn lists at sebastianmendel.de
Fre Dez 12 17:41:49 CET 2003


Christian Vosen wrote:

> Warning: is_dir() [function.is-dir]: open_basedir restriction in effect.
> File(..) is not within the allowed path(s): (/www/htdocs/v09xxxx/) in
> /www/htdocs/v09xxxx/gallerie.php on line 84
> 
> Das Skript selbst an dieser Stelle sieht so aus:
> 
> if (empty($_REQUEST['sr']))
> {
> $gal = dir("./g_bilder");
> $nr = 0;
> while($eintrag = $gal->read())
>        {
>        if ((!is_dir($eintrag)) && ($eintrag!=".") && ($eintrag!="..") &&
> ($eintrag!="admin") && ($eintrag!="gallery.opt"))  // das ist zeile 84
>             {
>              $gallery_verzeichnis[$nr]=$eintrag;
>              $nr+=1;
>             }
>        }
> sort($gallery_verzeichnis);


du darfst nur auf Dateien/Verezichnisse unterhalb von 
"/www/htdocs/v09xxxx/" zugreifen, da du dich bereits in 
"/www/htdocs/v09xxxx/" befindest wäre das Verzeichnis ".." eine Stufe 
höher, deshalb der Fehler

da du aber eh das Verzeichnisse ".." nicht haben willst musst due bloß 
die Überprüfungen in deiner IF-Bedingung umsortieren

da deine IF-Bedingungen durch && verknüpft bricht PHP eh ab so bald eine 
Bedingung nicht erfüllt ist, also nimmst du die Überprüfung nach ".." 
einfach nach vorne!

(normalerweiße würde man die Bedingung nach vorne nehmen welche am 
wahrscheinlichsten ist das sie zutrifft - sparrt Zeit)

   if ( $eintrag != "."
     && $eintrag != ".."
     && ! is_dir($eintrag)
     && $eintrag != "admin"
     && $eintrag != "gallery.opt" )
   {
     ...
   }

oder (viel schönsten):

   $notwanted = array('.', '..', 'gallery.opt', 'admin');

   if ( ! in_array($eintrag, $notwanted) && ! is_dir($eintrag) )
   {
     ...
   }

-- 
Sebastian Mendel (www.sebastianmendel.de)

*www.warzonez.de* | www.tekkno4u.de | www.nofetish.com

php::bar PHP Wiki   -   Listenarchive