Fama nihil est celerius.

Nichts ist schneller als ein Gerücht.

Livius, Ab urbe condita 24,12,5

Windows ist böse

Ok, auch wenn die meisten Linux-Fans bedingungslos zustimmen werden, geht es hier nicht gegen das ganze Windows, sondern den Windows Editor, das Notepad. Der hat in Verbindung mit Joomla eine gemeine und hinterhältige Eigenschaft: Er setzt ungefragt und ungebeten ein BOM bei UTF-8-codierten Texten.

Um zu verstehen, was da passiert, muß man ein wenig hinter die Kulissen blicken. Das Unicode Transformation Format macht endlich Schluß mit dem Wildwuchs bei den Zeichensätzen. UTF-8 ist das verbreitetste UTF-Format und wird sich wohl in Zukunft für die meisten Texte durchsetzen. UTF-16 und UTF-32 gehen verschwenderischer mit dem Speicherplatz um, denn sie benötigen für jedes Zeichen 2 oder 4 Bytes.

Schon seit der Computersteinzeit waren sich die verschiedenen Systeme nie einig, ob bei der Zusammenfassung mehrerer Bytes das höchstwertige Byte vorn oder hinten ist. Will man also solche mehrbytigen Werte auf verschiedenen Systemen nutzen, muß man angeben, wo das höchstwertige Byte steht. Das wird bei UTF-codierten Dateien mit dem so genannten Byte Order Mark (BOM) am Anfang der Datei gemacht. Da dieses BOM rein informativen Charakter für den Editor selbst hat, wird es nicht angezeigt. Man sieht es nur, wenn man die Datei mit einem Hex-Editor betrachtet. Wenn man so eine Datei allerdings in einer ISO-codierten Webseite ausgibt, sieht man das BOM als sinnlose Zeichenfolge .

Bei den 2- und 4-bytigen Codierungen UTF-16 und UTF-32 ist dieses BOM unbedingt erforderlich. Bei UTF-8 werden die Zeichen aber nur mit einem Byte dargestellt, und dabei gibt es logischerweise keine Byte-Reihenfolge. Das BOM ist zwar zulässig, aber völlig sinnlos.

Und was das Ganze mit Joomla zu tun? Dazu muß man wissen, wie ein Webserver die Dateien an den Browser ausliefert. Diese Daten bestehen nicht allein aus den sichtbaren Daten (HTML-Code, CSS, Bilder), sondern ihnen voraus wird ein Dateiheader geschickt, in dem steht, was der Browser an Daten erwarten muß. Normalerweise stellt der Server selbst fest, um welche Art Daten es sich handelt und schickt den Header automatisch ab. Der Webmaster muß nichts dazu tun.

Anders sieht es aber aus, wenn mit dem Header bestimmte Aufgaben erfüllt werden sollen, die der Server nicht automatisch erledigt, z.B. das Starten einer Session, um den Benutzer während seines Besuchs wiederzuerkennen. Dann muß der Webmaster den dafür nötigen Teil des Headers selbst zusammenstellen und abschicken, bevor die ersten Daten zum Browser geschickt werden. Wenn auch nur ein Zeichen geschickt wird, stellt der Server den Header zusammen und schickt ihn ab. Für einen eigenen Header ist es dann zu spät.

Bei PHP wird alles außerhalb von <?php ...  ?> als normale Zeichen ausgegeben. Und da das BOM das allererste Zeichen so einer Datei ist, kommt es auf jeden Fall vor dem öffnenden <?php. Auch wenn die Datei gar keine Ausgabe machen soll wie z.B. die configuration.php bei Joomla, wird das BOM zum Browser geschickt und vorher natürlich der Header. Wenn Joomla kurz darauf seinen eigenen Header abschicken will, um eine Session für einen registrierten User oder einen Admin zu starten, meckert der Server:

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/x/www/htdocs/configuration.php:1) in ...

In den erwünschten Joomla-Einstellungen sieht man diese Meldung allerdings nicht, weil die Fehlermeldungen unterdrückt werden. Man merkt es aber daran, daß der registrierte User nicht an die Inhalte für registrierte kommt und der Admin nicht ins Backend.

So hat eine winzige, unsichtbare Ursache absolut nervige Folgen. Und deshalb ist der Windows-Editor böse.

All diese Probleme kann man vermeiden, indem man für das Bearbeiten von Joomla-Dateien einen Editor benutzt, der nicht einfach ungefragt unerwünschte Zeichen einfügt, z.B. das kostenlose Notepad++ oder eine der vielen Alternativen.

Um den Fehler mit Notepad++ zu reparieren, öffnet man die Datei, die in der Fehlermeldung bei "(output started at /home/x/www/htdocs/configuration.php:1)" genannt wird, wählt im Menü Kodierung -> Konvertiere zu UTF-8 ohne BOM und speichert die Datei wieder. Da das BOM im Editor nicht angezeigt wird, sieht man keinen Unterschied.

Wichtig: Auch ohne BOM darf sich vor dem öffnenden <?php kein Zeichen befinden, weder ein Leerzeichen noch ein Zeilenumbruch. Das < muß das erste Zeichen der Datei sein.

Wer ganz sicher gehen will, öffnet die Datei gar nicht mit einem Texteditor, sondern gleich mit einem Hex-Editor wie HxD. Im Hex-Modus sind die drei Bytes des BOM auf jeden Fall sichtbar. Um es zu entfernen, müssen die drei Bytes EF BB BF am Anfang gelöscht werden. Die Warnung, daß dadurch die Dateilänge verändert wird, muß bestätigt werden. Genau das ist gewollt. Danach muß das erste Zeichen der Datei 3C (<) sein. Sollten vor dem 3C noch weitere Zeichen sein, müssen auch sie gelöscht werden.


Dieses Gerücht stimmt:

( 93% 60 Stimmen ) 

Kommentare   

 
0 # JoomlaVM 2013-08-08 21:29
Danke erst mal für die Erklärung. Bei mir war es auch das BOM in der configuration.p hp. Vielen Dank noch mal.
Antworten | Antworten mit Zitat | Zitieren
 
 
0 # Hut abPate 2013-07-05 22:12
Danke für die Hilfe.
Antworten | Antworten mit Zitat | Zitieren
 
 
0 # RE: Windows ist böseGundi 2013-03-01 12:31
Danke Danke Danke für diese Erklärung... als Laie habe ich die Erklärung sehr gut verstanden

mgf :lol:
Antworten | Antworten mit Zitat | Zitieren
 
 
0 # Tausend Dank!RonnA 2013-01-19 17:14
Nach drei Stunden Web-Recherche bin ich hier gelandet! Und *wow* die Ursache für mein Problem war in der Tat das BOM in der configuration.p hp
Antworten | Antworten mit Zitat | Zitieren
 
 
0 # RE: Windows ist böseGuest 2011-10-15 02:00
Hmm, habe es gelesen, auch verstanden, nur weiß ich nicht, welche Datei ich nun ändern soll. Komme nicht als Admin ins Backend?
"Benutzername und Passwort falsch oder das Benutzerkonto existiert noch nicht!"
Antworten | Antworten mit Zitat | Zitieren
 
 
0 # RE: Windows ist böseGuest 2011-08-22 23:01
:lol: :lol: :lol:
Super Tipp, vielen Dank! Hat mir 'ne Neuinstallation und viele Fragen erspart...

Gruß
Lars
Antworten | Antworten mit Zitat | Zitieren
 
 
+1 # RE: Windows ist böseGuest 2011-03-20 12:36
Vielen, vielen Dank! - Endlich komme ich wieder ins Backend!!! :lol:
Antworten | Antworten mit Zitat | Zitieren
 
 
0 # Geeignete EditorenSlowrider 2010-11-19 10:36
Guckst du auch hier.
Antworten | Antworten mit Zitat | Zitieren
 
 
0 # PeeWeeGuest 2010-10-19 23:26
Sauber. Wenn das stimmt, ist mein Problem mit meiner Joomla CMS WEbsite gelöst. DANKE
Antworten | Antworten mit Zitat | Zitieren
 
 
0 # RenéGuest 2010-09-22 09:41
8) cool, vielen Dank für die Erklärung des "Unerklärlichen ", bei solchen Sachen frag ich mich immer womit eigentlich die MS-Coder so arbeiten :D
Antworten | Antworten mit Zitat | Zitieren
 
 
+1 # RE: Windows ist böseGuest 2010-08-05 18:56
Gewusst DASS es so ist und jetzt auch warum. Danke für die Erklärung Dietmar.
Antworten | Antworten mit Zitat | Zitieren
 
 
+4 # Text!Guest 2010-08-04 20:14
Sehr netter Text Dietmar, schön zu lesen und sicherlich für viele Windoof Joomla Nutzer zu empfehlen!

MfG :P
Antworten | Antworten mit Zitat | Zitieren
 

Kommentar schreiben


Sicherheitscode
Aktualisieren

Copyright © 2016 Joomla-Gerüchte