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:45:39 CET 2003


Sebastian Tobias Mendel genannt Mendelsohn wrote:

> 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) )
>   {
>     ...
>   }
> 

achso, vergessen zu sagen, der genaue Code der den Fehler verursacht ist 
das is_dir(), deshalb muss das auch verschoben werden

-- 
Sebastian Mendel (www.sebastianmendel.de)

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

php::bar PHP Wiki   -   Listenarchive