Neuigkeiten:

still alive...

Hauptmenü

file_exists() Problem php 5.2.2

Begonnen von Powie, 21. Mai 2007, 11:58:56

Vorheriges Thema - Nächstes Thema

Powie

Mir wachsen graue Haare..... irgendwie habe ich den Verdacht das die Funktion seid php 5.2.2. spinnt.
Ich bekomme bei Verwendung einen open_basedir restriction Fehler, wenn die Datei nicht existiert...... Eine Erklärung ist mir bisher noch nicht untergekommen, ich habe es erst garnicht ausmachen können wo das überhaupt her kommt. Switche ich auf php5.2.0 zurück funktionierts wie es gehört.
Ist das noch jemandem ausser mir aufgefallen?

Powie

jemand eine Idee für einen Workaround?  :ugly:

k00ni

Ich bekomme bei Verwendung einen open_basedir restriction Fehler, wenn die Datei nicht existiert...... Eine Erklärung ist mir bisher noch nicht untergekommen, ich habe es erst garnicht ausmachen können wo das überhaupt her kommt. Switche ich auf php5.2.0 zurück funktionierts wie es gehört.[/quote]
Also damit noch nicht gearbeitet. Aber wenn es dir hilft, dann packe die Funktion oder die Routine in einen try-catch Block. Dann bricht dir das Skript nicht ab und du kannst normal weiterarbeiten und bspw. eine Fehlermeldung ausspucken.
An sich sehe ich da jetzt auch kein Problem, wenn die Funktion normal arbeitet, wenn eine Datei existiert. Also von daher. Sehe jetzt nur die Möglichkeit, dass an die Entwickler zu melden oder einfach in einem Fehlerfall das komplette Aussetzen des Skriptes zu verhindern.
 
Grüße

Powie

ich sehe aber nicht ein ein try_catch zu machen nur weil eine php Funktion nicht das tut was man von ihr erwartet. Vielleicht bin ich auch nur zu blöd und übersehe irgendwas.

dec

brauchst du file_exist() mit dem absoluten pfad direkt vom homeverzeichnis aus (bsp. /home/user/public_html/unterordner/bild.jpg) oder relativ (bsp. in der datei /home/user/public_html/index.php mit file_exist(unterordner/bild.jpg))?
dieses problem hatte ich früher auch schon mal. so konnte ich die fehlermeldung umgehen, indem ich immer vom homeverzeichnis aus nachgefragt habe.

spass ist, was ihr draus macht


Powie

ich frage immer absolute Pfade ab.

Powie

ich habe es weiter eingegrenzt, und weiss nicht was ich davon halten soll. Vielleicht könnt ihr es selbst ausprobieren.
Einfach Sache: Ich frage im Adminbereich mit file_exists ob das File blog/admin.php existiert, dies schlägt fehl wenn das File nicht existiert. Ausgeworfen bekomme ich einen open_basedir Fehler:

Warning: file_exists() [function.file-exists]: open_basedir restriction in effect. 
File(/srv/www/web20/html/blog/admin.php) is not within the allowed path(s):
(/srv/www/web20/html/:/srv/www/web20/phptmp/:/srv/www/web20/files/:/srv/www/web20/atd/) in
/srv/www/web20/html/admin/adminmenuleft.php on line 19

 
 
Lege ich den Ordner blog an, dann funktioniert der Code und liefert mir sauber das erwartete FALSE zurück!
Auf powie.de funktioniert die ganze Sache hingegen, hier liegt das ganze System im Unterordner cms/ . Die Problematik scheint zu sein das die UID/GROUP der DOCUMENT_ROOT nicht dem eigentlichen Benutzer genau gehört. Das Problem ist erst seid php5.2.2. so nachvollziehbar. Was wurde geändert? Hat jemand eine Idee?

k00ni

Was mir noch einfällt wäre, dass man vorher prüft, obs den Ordner gibt. Wenn nicht, dann abbrechen, wenn ja, dann prüfen, ob die Datei admin.php drin ist. Somit könntest du vielleicht ( ! ) den hässlichen Fehler umgehen.

Powie

ha.. hab ich gemacht, wenn es den Ordner nicht gibt gibts genau den gleichen open_basedir fehler wenn ich nach dem Ordner frage  :gaga:

k00ni

Wie wäre es, wenn du die Datei versuchst per fopen glaub ich zu öffnen? Ist an sich schwachsinnig, ich weiß. Aber vielleicht reicht es erstmal um weiterzuarbeiten. Denn falls du das nicht umgehen kannst, dann downgrade doch, arbeite normal weiter und schau, was in der nächsten Version so kommt. Oder du hackst dich in den Code von PHP rein und fixed das selber :ugly:

otti_mania

ist das denn jetzt ein Bug in der PHP Engien generell oder?
weil wennPHP seitig da was schief läuft dann kann ich nur sagen aufschreiben warten bis PHP 5.2.3 draußen ist und kontrollieren!
wenn das ein Script fehler sein sollte dann würde ich tippen entweder kontrollieren ob der File oder Ordner wirklich existiert oder hallt da es anscheinend um das anlegen von dateien geht wieder mittels Datenbank umgehen.
Sprich wie in der Galerie mit den Bildern und der Datenbank wo sie einfach abgelegt werden!
Vieleicht hilfts ja
Gruß Otti

Gruß Otti




#########WICHTIG###########


if (IQ > Raum - °C) echo $post


   else exit ();


##########################




http://www.ottimania.de\" rel=\"external nofollow\">http://www.ottimania.de/banner1.gif\" alt=\"banner1.gif\">


raiser

ähm... sicher ein bug?, oder auch so gewollt!
aber warum nicht
@file_exists() dann sollte doch die warnung unterdrückt sein
denn soweit ich das sehe, ist die ausgabe der warung doch richtig...
du versuchst eine datei zu checken, die in einem nicht existierenden ordner liegt... deswegen die warung... und file_exists liefert dir bestimmt auch false, wenn der ordner nicht existiert.
gruß raiserle

Wissen ist das einzige Gut, dass sich vermehrt, wenn man es teilt! (Marie von Ebner-Eschenbach)




Irren ist menschlich!




Wer andern eine Grube gräbt,


sollte darüber nachdenken,


ob sie tief genug ist!!!!




Kameradschaft ist, wenn der


Kamerad schafft !!!!


mahe

http://blog.mahe.at\" rel=\"external nofollow\">http://blog.mahe.at/wp-content/uploads/2007/06/88x31_1.jpg\" alt=\"88x31_1.jpg\">


Ja, diese Signatur dient zur Werbung!


Und dass ich meine Posts wiederfinde ...



raiser


Original von Powie
Warning: file_exists() [function.file-exists]: open_basedir restriction in effect. 
File(/srv/www/web20/html/blog/admin.php) is not within the allowed path(s):
(/srv/www/web20/html/:/srv/www/web20/phptmp/:/srv/www/web20/files/:/srv/www/web20/atd/) in
/srv/www/web20/html/admin/adminmenuleft.php on line 19

 
Lege ich den Ordner blog an, dann funktioniert der Code und liefert mir sauber das erwartete FALSE zurück!
[/quote]
@mahe warum?
so wie es bei powie oben aussieht, funktioniert file_exists() doch.
es kommt laut powie nur zu eine warung, wenn der ordner nicht existiert, was ja auch vollkommen richtig ist.

Wissen ist das einzige Gut, dass sich vermehrt, wenn man es teilt! (Marie von Ebner-Eschenbach)




Irren ist menschlich!




Wer andern eine Grube gräbt,


sollte darüber nachdenken,


ob sie tief genug ist!!!!




Kameradschaft ist, wenn der


Kamerad schafft !!!!


all your base are belong to us / Discord