Binär (BINARY) != ASCII - Beim Upload des Forums beachten

Beschreibung: Wenn man die Dateien seiner Website oder seines Forums per (S)FTP überträgt, bieten die FTP-Programme i.d.R. die Auswahl zwischen den beiden Übertragungsmodi ASCII und Binär/Binary/Image an (bzw. auch automatisch).

Kategorie: Installation und Update, Fehlermeldungen, Lexikon

Link zu diesem Artikel: Alles auswählen

[url=https://www.phpbb.de/kb/viewarticle?a=12&sid=58edf1ae4722f4b1acda7e68ea94a5c6]Knowledge Base - Binär (BINARY) != ASCII - Beim Upload des Forums beachten[/url]

Wenn man die Dateien seiner Website oder seines Forums per (S)FTP überträgt, bieten die FTP-Programme i.d.R. die Auswahl zwischen den beiden Übertragungsmodi ASCII und Binär/Binary/Image an (bzw. auch automatisch). Damit die Dateien nicht durch den falschen Übertragungsmodus zerstört werden, ist es wichtig zu verstehen, wie diese funktionieren.

Für das Verständnis ist es zunächst wichtig zu wissen, dass Zeilenumbrüche bei den unterschiedlichen Betriebssystemen (Windows, Mac OS Classic sowie alle Unixoiden Betriebssysteme) historisch bedingt unterschiedlich gespeichert werden. Siehe dazu den Artikel "Zeilenumbruch" bei Wikipedia. Wenn nun jemand z.B. eine Datei von einem Linux-Server auf seinen lokalen Computer heruntergeladen hat, konnte er diese dort mit dem Editor oder Compiler nicht öffnen.

Um dieses Problem zu umgehen, wurde dann bei FTP der ASCII-Modus eingeführt, welcher die Dateiendungen automatisch in das korrekte Format für das jeweilige Zielsystem konvertierte. Da dieser jedoch bei Binärdateien wie Bildern dazu führen würde, dass diese zerstört werden, mussten diese zwingend im Modus "Binär" hoch- und runtergeladen werden. Um dem Benutzer das Hochladen ganzer Verzeichnisse mit unterschiedlichen Dateien zu erleichtern, wurde dann oft noch ein automatischer Modus angeboten, welcher basierend auf der Dateiendung den einen oder anderen Modus wählt.

In der heutigen Zeit muss man aber feststellen, dass der ASCII-Modus nur noch in sehr seltenen Fällen sinnvoll ist. Mit Ausnahme von Windows Notepad können praktisch alle aktuellen Editoren Dateien in allen Zeilenendenformaten lesen und speichern. Auch Interpreter wie PHP oder Perl, Kommandozeilentools wie die bei MySQL mitgelieferten oder Browser haben keine Probleme mit den unterschiedlichen Formaten.

Auf der anderen Seite kann der ASCII-Modus jedoch verschiedene Probleme verursachen. Wenn man sich zum Beispiel phpBB (oder andere Open Soure Software) als .zip Datei herunterlädt, so hat man die Dateien nach dem Entpacken grundsätzlich im Unix-Zeilenendenformat auf der eigenen Festplatte. Das Hochladen per FTP im ASCII-Modus würde also überhaupt keine Änderungen an den Dateien mehr vornehmen. Wenn man dann hingegen einzelne Dateien vom Server wieder im ASCII-Modus herunterlädt, so würden die Zeilenenden umgewandelt und obwohl man inhaltlich nichts daran verändert hat, ist die Datei nicht mehr die selbe wie aus dem zip-Archiv. Weitere Probleme, die durch die Nutzung des ASCII-Modus entstehen können sind korrupte Dateianhänge oder Datenbankbackups, wenn man diese per FTP herunterlädt oder "headers already sent" Fehlermeldungen nach mehrfachem Up- und Download in unterschiedlichen Modi.

Aus diesen Gründen empfehlen wir, grundsätzlich alle Dateien im Modus Binär/Binary/Image hochzuladen. Wenn du Dateien komplett neu anlegst (z.B. um eine Extension zu entwickeln), solltest du dies im Unix-Zeilenendenformat tun, damit das Format bei allen Dateien identisch ist. Selbiges gilt für das Herunterladen: Auch das sollte im Binärmodus erfolgen.

Wenn nun bei dir, durch den falschen Übertragungsmodus, kaputte Dateianhänge entstanden sind, sind die Daten in manchen Fällen trotzdem noch zu reparieren. Dies muss nicht funktionieren, denn die Umkehrung der Umwandlung der Zeilenenden ist eigentlich nicht eindeutig möglich. In manchen Fällen hilft aber eine Rückumwandlung aller Zeilenenden, weil zufällig in der Binärdatei die andere Variante nicht vorkam.