Spielwurm schrieb:
Code:
/usr/local/awstats/wwwroot/icon//browser/firefox.png
und da ist es keine Wunder, dass der Fehler auftritt, denn es stehen nach dem Ordner "icon" zwei Slashes! Mein Frage: wo können die herkommen.
wo die herkommen können? da gibt es verschiedene Möglichkeiten, meistens ist das beim Programmieren nicht so ganz sauber geschrieben. In aller Regel entsteht das dort wo innerhalb eines Programms an einen Path ein weiterer Path oder Dateinamen angehängt wird. Der Programmierer kann nicht ahnen ob der User nun "
/PATH/" oder "
/PATH" konfiguriert und setzt einfach beim Zusammenbau noch ein zusätzliches
"/" vor den Dateinamen damit ist er auf der sicheren Seite ohne aufwendig prüfen zu müssen ob der Pathname nun mit abschließenden "/" vorgelegen hat, oder nicht. Aber das macht im Betriebssystem überhaupt nichts, das erzeugt desshalb keine Fehler. Die Bash und auch die glibc und alle "normalen" Libraries mit deren Hilfe direkt auf das Dateisystem zugriffen wird, ignorieren das großzügig. Also egal wie viele "/" dort hinter einander stehen, es wird nur als eines gewertet. Das ist Absicht.
Code:
robi@linux:/> ls -il /etc/sysconfig/kernel
789319 -rw-r--r-- 1 root root 2309 28. Dez 02:21 /etc/sysconfig/kernel
robi@linux:/> ls -il ///////etc/sysconfig/kernel
789319 -rw-r--r-- 1 root root 2309 28. Dez 02:21 ///////etc/sysconfig/kernel
robi@linux:/> ls -il ///////etc//////////sysconfig/kernel
789319 -rw-r--r-- 1 root root 2309 28. Dez 02:21 ///////etc//////////sysconfig/kernel
robi@linux:/> ls -il ///////etc//////////sysconfig////////////////kernel
789319 -rw-r--r-- 1 root root 2309 28. Dez 02:21 ///////etc//////////sysconfig////////////////kernel
Zum Fehler kann sowas jedoch in unsauber geschriebenen Scripten bzw. in höheren Programmen führen, die erst noch über andere Script- oder Programmiersprachen oder über Datenbanken arbeiten. Dort kann es sein, dass mit solchen "unsauberen" Dateinamen dann nicht direkt auf das Dateisystem zugegriffen wird, (das würde funktionieren) sondern dieser "unsaubere" Path vorher erst noch mit Textmethoden bearbeitet oder zerlegt wird. Hier ist dann nicht immer wirklich berücksichtigt, dass durchaus auch mal "//" vorkommen könnte. Sollten hierdurch Fehler auftreten, fallen solche Bugs aber eigentlich schnell auf, und sind auch schnell beseitigt, so das es selten zum wirklichen Problem beim User wird.
Nun kenne ich awstats überhaupt nicht, vielleicht muss an dieser Stelle das Verzeichnis relativ zu wwwroot und nicht absolut im Dateisystem eingetragen werden? Das würde ich im Webserverumfeld als Fehlergrund eher vermuten, zumal "404-Fehler" kein Fehler ist der zwangsläufig auf ein Lese Problem mit einem absoluten Path im Dateisystem hinweisen würde, sondern ein Fehler der in der URL zu suchen ist.
robi