problem mit umlauten in skriptnamen/pfad
awx
- php
0 suit0 awx
0 Vinzenz Mai
hi!
ich beobachte hier auf meinem server ein seltsames phänomen:
es werden keine php skripts ausgeführt deren datei oder pfadname einen umlaut enthält. ich bekomme nur ein weisses browserfenster.
die datei heisst:
url: http://awxsrv/wwwroot/test/phpinfä.php
real: E:/Main/wwwroot/test/phpinfä.php
apache error log:
[Tue Feb 08 13:22:39 2011] [error] [client 192.168.178.21] PHP Warning: Unknown: failed to open stream: No such file or directory in Unknown on line 0, referer: http://awxsrv/wwwroot/test/
[Tue Feb 08 13:22:39 2011] [error] [client 192.168.178.21] PHP Fatal error: Unknown: Failed opening required 'E:/Main/wwwroot/test/phpinf\xc3\xa4.php' (include_path='.;C:\php\pear') in Unknown on line 0, referer: http://awxsrv/wwwroot/test/
apache access log:
192.168.178.21 - - [08/Feb/2011:13:38:36 +0100] "GET /wwwroot/test/phpinf%c3%a4.php HTTP/1.1" 500 -
php log:
[08-Feb-2011 13:38:36] PHP Warning: Unknown: failed to open stream: No such file or directory in Unknown on line 0
[08-Feb-2011 13:38:36] PHP Fatal error: Unknown: Failed opening required 'E:/Main/wwwroot/test/phpinfä.php' (include_path='.;C:\php\pear') in Unknown on line 0
es ist dabei egal ob sich der umlaut im dateinamen oder irgendwo im pfad befindet.
details:
os: windows home server 2003 x86
apache: 2.2.17
php: 5.3.5 (auch getestet 5.3.3 und 5.2.17)
wäre schön, wenn mir jemand helfen könnte
gruß
awx
apache access log:
192.168.178.21 - - [08/Feb/2011:13:38:36 +0100] "GET /wwwroot/test/phpinf%c3%a4.php HTTP/1.1" 500 -
Rufst du das Script jetzt direkt auf ...
php log:
[08-Feb-2011 13:38:36] PHP Warning: Unknown: failed to open stream: No such file or directory in Unknown on line 0
[08-Feb-2011 13:38:36] PHP Fatal error: Unknown: Failed opening required 'E:/Main/wwwroot/test/phpinfä.php' (include_path='.;C:\php\pear') in Unknown on line 0
... oder bindest du es per require/include ein?
es ist dabei egal ob sich der umlaut im dateinamen oder irgendwo im pfad befindet.
Nebst der Tatsache, dass man das nicht tut, weil es eben zu solchen Problemen führen kann (nicht jedes Filesystem ist 100%ig Unicode- bzw. UTF-8-fähig - wenn man auf einen anderen Server umzieht z.B.) hat du vermutlich ein simples Zeichenkodierungsproblem.
Die Vermutung liegt nahe, dass dein Script möglicherweise ein Script in irgend einer ANSI-Kodierung ist, während das Filesystem aber mit UTF-8 arbeitet oder umgekehrt.
danke für die antwort
Rufst du das Script jetzt direkt auf ...
ja!
Nebst der Tatsache, dass man das nicht tut, weil es eben zu solchen Problemen führen kann (nicht jedes Filesystem ist 100%ig Unicode- bzw. UTF-8-fähig - wenn man auf einen anderen Server umzieht z.B.) hat du vermutlich ein simples Zeichenkodierungsproblem.
ich habe nur wenig einfluss auf den name des verzeichnisses in dem sich das skript befinden soll. das skript selbst hatte den umlaut nur zu testzwecken.
das wird dann selbst verständlich keine umlaute enthalten. aber es reicht auch ein umlaut im verzeichnis, um den fehler zu prodizieren.
Die Vermutung liegt nahe, dass dein Script möglicherweise ein Script in irgend einer ANSI-Kodierung ist, während das Filesystem aber mit UTF-8 arbeitet oder umgekehrt.
die frage ist jetzt: wo fange ich an? die codierung der namen im dateisystem kann ich nicht beeinflussen. der apache zeigt alles ganz tapfer an. wenn ich z.b. ein bild anklicke "töst.jpg" dann wir das ohne weiteres dargestellt. auch ein perl skript mit dem namen "pärl.pl" wird wunderbar ausgeführt.
das scheint mir eine einstellung unter php zu sein - aber welche?
vielleicht fällt hier ja noch jemandem was ein
gruß
awx
Hallo,
ich beobachte hier auf meinem server ein seltsames phänomen:
es werden keine php skripts ausgeführt deren datei oder pfadname einen umlaut enthält. ich bekomme nur ein weisses browserfenster.
die datei heisst:
url: http://awxsrv/wwwroot/test/phpinfä.php
nein, das ä ist hier zu gemäß URI-Kontext zu codieren.
real: E:/Main/wwwroot/test/phpinfä.php
und es ist eine sehr schlechte Idee, Umlaute in Dateinamen zu verwenden.
Du musst nämlich wissen, welche Zeichencodierung im Dateisystem vorliegt.
os: windows home server 2003 x86
d.h. die verwendete Zeichencodierung dürfte vermutlich UTF-16 sein.
Tipp: vermeide solche Zeichen in Skriptnamen/pfaden und verlinkten Ressourcen.
Freundliche Grüße
Vinzenz