• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Awstats erzeugt selbst Error 404

Spielwurm

Advanced Hacker
Ich habe auf meinem Webserver awstats eingerichtet. Jetzt erzeugt awstats selbst 404-Fehler, weil es die eigenen Icons nicht findet: die Ausgabe in der Liste ist z.B.:
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. In der awstats-Konfiguration habe ich den Icons-Ordner wie folgt eingetragen:
Code:
/usr/local/awstats/wwwroot/icon
also ohne Slash dahinter. Ist das ein Bug oder wo habe ich nicht aufgepasst?

Spielwurm
 
A

Anonymous

Gast
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
 
OP
S

Spielwurm

Advanced Hacker
Meine Schuld: ich habe ein Ausführungsscript für cron geschrieben und da stand der überflüssige Schrägstrich noch drin. Und diese Angabe hat die Angabe im config-File überschrieben. Hatte ich schlicht vergessen ! :???: Daneben habe ich noch den Fehler entdeckt, dass im config-File auch kein Slash vor dem "icon" stehen darf, weil es ja eine relative Pfadangabe ist. Da hat awstats selbst ein falsches Beispiel eingetragen. Danke Robi, das mit den doppelten Slashes im Betriebssystem wusste ich nicht, habs gleich ausprobiert.

Spielwurm
 
Oben