29.8.2009

PASV

Ich betreibe mein Blog ja mit einer eigenen Software - nichts besonderes, ein paar PHP-Skripte halt, die die notwendige Funktionalität realisieren. Der große Vorteil ist, daß ich immer dann, wenn irgend etwas schief geht (und das tut es regelmäßig, mit welcher Software auch immer), genau eine Person anschnauzen muß: mich selbst.

Mein Ansatz ist dabei etwas anders als bei den meisten (allen?) CMS. Auf meinem heimischen Rechner läuft eine Apache-Installation, mit der ich einen lokalen Server betreibe. Dort findet sich ein kompletter Mirror meines Blogs, und nur dort schreibe und editiere ich meine Texte. Von dort aus werden die bearbeiteten Dateien auf den externen Host kopiert. Der große Vorteil ist, daß extern keine Skripte herumliegen, mit denen man womöglich Zugriff auf das Blog bekommen könnte, wie dies etwa bei WordPress der Fall ist. Auf diese Weise ist die Gefahr minimal, daß man mein Blog hacken kann - das ginge nur, wenn man meinen FTP-Account hackt.

Vor drei Tagen war der externe Server, der mein Blog hostet, für kurze Zeit offline - das ist nicht ungewöhnlich und geschieht (selten) von Zeit zu Zeit. Als ich am Abend einen Eintrag im Blog editieren wollte, funktionierte da plötzlich nichts mehr - alle Versuche, via (der PHP-Funktion) ftp_put() Zugriff auf den Host zu nehmen, endeten in einem Timeout. Auch das ist früher schon passiert, wobei ich keine Ahnung habe, was da der Grund war. Als ich gestern erneut damit gescheitert bin, eine Datei zu kopieren, habe ich ein einige Zeit investiert, um nach dem Fehler zu suchen.

Das Problem - auf dem Host wurden zwar Dateien angelegt, aber keine Daten geschrieben - verschwand, nachdem ich via ftp_pasv() explizit in den passiven FTP-Modus geschaltet hatte.

Ich hatte zuvor nie etwas vom Unterschied zwischen passiven und aktiven Modus beim File-Transfer via FTP gehört, und bin nur durch Zufall und nach wildem Herumgestochere in einer Dokumentation darüber gestolpert. Bis letzten Mittwoch mußte ich mir darüber keine Gedanken machen, weil der Default des Servers offenkundig der passive Modus war. Der Admin, der meinen Host-Server betreut, hat die kurze Ausfallzeit mit großer Wahrscheinlichkeit dazu genutzt, ein Server-Update einzuspielen - und die hat wohl eine andere Voreinstellung für PASV.

Zuletzt war das dann genau eine Zeile Code, die das Problem löste - nach Research vieler Stunden, nicht das erste Mal, und wohl auch nicht zuletzt.

Was ich sagen will: es ist ein hoffnungsloses Unterfangen, wenn man heute versucht, auf eigenen Beinen in der Software-Welt zu stehen. Vor zwanzig Jahren habe ich gelegentlich dann, wenn man mir vorschlug, ein bestimmtes Tool oder Programm zu kaufen, mit dem Spruch reagiert: warum soll ich für Software bezahlen - ich habe schließlich einen C-Compiler. Diese Zeiten sind definitiv vorbei.

(Kommentarfunktion z.Zt. deaktiviert.)