PHP und der Fail mit dem Leerzeichen . =

phpdotfailKürzlich habe ich seit längerer Zeit mal wieder ein paar Kleinigkeiten mit PHP umgesetzt. Dabei durfte ich zunächst feststellen, dass ich doch ziemlich eingerostet bin. Sobald man damit anfängt, simple Befehle zu googeln, steht fest: Mit den früheren Skills ist es nicht mehr weit her…

Darüber hinaus aber habe ich mich daran erinnert, dass die meisten Informatiker, die ich kenne, PHP immer verteufelt haben. Es sei so unheimlich inkonsistent, nervig und überhaupt kaum zu debuggen. Als jemand, der meistens nur mit einfachen Code- bzw. Text-Editoren arbeitet, kann ich besonders den letzten Punkt unterstreichen. Wenn mal etwas nicht funktioniert, geht nichts mehr und man begibt sich in trial-and-error-Manier auf die Suche.

Bisher kam ich damit noch immer ans Ziel, aber so verzweifelnd – und letztlich trivial! – wie zuletzt war das Problem noch nie. Es war so simpel, dass es schon peinlich ist: Ein einfaches Kontaktformular, das per mail() Funktion eine E-Mail verschickt. Gefühlt habe ich das schon tausendmal gemacht. Nur: Diesmal kamen die Mails einfach nicht an. Ich muss dazu sagen, dass die mail()-Funktion bei HostEurope mit einem weiteren -f Parameter versehen werden muss, damit man eine Absenderadresse nach Wunsch verwenden kann. Diese muss aber zuvor beim Hoster auch direkt angelegt worden sein. Damit hatte ich in der Vergangenheit schon die eine oder andere Mühe, denn nicht alle Hoster setzen dies voraus. Also war ich über Stunden erfolglos damit beschäftigt, entsprechende E-Mail Konten und Weiterleitungen einzurichten, verschiedene Header-Parameter zu probieren… und so weiter. Fehlanzeige!

Langer Rede, kurzer Sinn: Statt

$headers .=

stand in meinem Code

$headers . =

Es war einfach nur ein Leerzeichen zwischen dem Punkt und dem Gleichheitszeichen. Das war alles! Ich hatte Stunden auf andere Dinge verschwendet, bis ich endlich darüber gestolpert bin. Tja, bin ich jetzt einfach nur kein besonders guter PHP-Coder oder ist PHP wirklich doof? Oder etwas von beidem? 😉