Mailinglisten-Archive |
Hallo Thomas, Thomas Schneider wrote: > Parameterübergabe im Pfad funktioniert laut den PHP-Gurus wie folgt: > > http://www.server.com/foo.php3/bar > startet das Skript foo.php3 mit Parameter "bar", übergeben im $PATH_INFO - fein! > > Aber: Diese Parameterübergabe im Pfad funktioniert offensichtlich nur > auf Linux/Unix-Systemen, ich habe das auch schon vergeblich unter Windows > probiert. Dies ist wohl ein Bug von Apache, PHP meldet immer: > > | Fatal error: Unable to open xxx in - on line 0 > | No input file specified. Du hast offenbar recht. Ich habe es getestet und es scheint tatsaechlich einen merkwuerdigen Fehler zu geben. Erstmal phpinfo ausgefuehrt. Windows 95: SCRIPT_NAME /php-bin/php.exe PATH_INFO /phpinfo.php Unix: SCRIPT_NAME /cgi-bin/php PATH_INFO /phpinfo.php Soweit ok. Aber folgendes Script geht voll daneben: $script = $PATH_INFO; $host = $HTTP_HOST; $dirname = dirname ( $script ); $file = $dirname . "/" . "test.html"; $fp = fopen ( $file , "r" ); $content = fread ( $fp, filesize ( $file ) ); fclose ( $fp ); echo $content; echo $file; Ergebnis: Warning: fopen("/probieren/path_info/test.txt","r") - No such file or directory in C:\www\vhosts\domain\probieren\path_info\path_info.php on line 20 Warning: Unable to find file identifier 0 in C:\www\vhosts\domain\probieren\path_info\path_info.php on line 21 ok, geaendert auf: $file = "http://" . $host . $dirname . "/" . "test.txt"; Ergebnis: http://www.domain.com/probieren/path_info/test.txt Es kommt ueberhaupt kein Output der Test.txt !!!!! Aber auch keine Fehlermeldung wie oben. Da stimmt wirklich was nicht. Das waere dann ein Bug in der Windows-Version (von Apache?) ? Komischerweise, wenn ich eine relative Adressierung zum aktuellen Standort der aufrufenden Datei mache: $file = "../test.txt"; Datei liegt jetzt ein Dir tiefer, es funktioniert: TEST TEST TEST TEST ../test.txt Also muss auch: $file = "../../probieren/path_info/test.txt"; d.h. - Datei liegt im gleichen Directory - gehen. Stimmt: TEST TEST TEST TEST ../../probieren/path_info/test.txt Also auch: $script = $PATH_INFO; $dirname = dirname ( $script ); $file = "../.." . $dirname . "/" . "test.txt"; ... funktioniert: TEST TEST TEST TEST ../../probieren/path_info/test.txt D.h. man muss den Pfad mit entsprechend vielen "../" rueckwaerts zur Root zaehlen und dann ueber PATH_INFO wieder hoch. So geht es offenbar. Nur relative und keine absoluten Angaben. Das muesste dann aber auch unter Unix funktionieren, womit zumindest ein kleinster gemeinsamer Nenner existieren wuerde. > Wer weiß eine Lösung für Win95? Das da oben ist keine, allenfalls ein Notbehelf. oder habe ich was falsch gedacht-gemacht? Mit freundlichen Grüßen, Oliver Kummerow email: naklar_(at)_altavista.net
php::bar PHP Wiki - Listenarchive