25 Jahre PHP: Vom Web-Werkzeugkasten zur Programmiersprache

Heute vor 25 Jahren veröffentlichte Rasmus Lerdorf die Personal Home Page Tools – der Code überlebte nicht lange, die Idee und PHP dagegen bis heute.

In Pocket speichern vorlesen Druckansicht 144 Kommentare lesen
Torte mit brennenden HAPPY-Kerzen

(Bild: ritchielee CC-BY-SA 2.0)

Lesezeit: 8 Min.
Von
  • Jan Mahn
Inhaltsverzeichnis

Bewegte Zeiten waren das im Frühsommer 1995, vor einem Vierteljahrhundert: Am 22. Mai veröffentlichte die Firma Sun ihre Programmiersprache Java. Zu dieser Zeit entschied sich auch Rasmus Lerdorf, sein Projekt, an dem er die letzten Monate gearbeitet hatte, der Öffentlichkeit auszusetzen. Diese Öffentlichkeit war die Newsgroup "comp.infosystems.www.authoring.cgi". Ein paar Schnipsel C-Code für typische serverseitige Programmieraufgaben wie Logging und zugriffsbeschränkte Bereiche hatte Lerdorf zusammengestellt, weil es ihn nervte, immer wieder von vorne zu beginnen: Die "Personal Home Page Tools (PHP Tools)" waren in der Welt.

Wie lebensfeindlich diese Welt war, versteht man beim Stöbern durch die anderen Beiträge, an denen sich Lerdorf in dieser Zeit beteiligte. Ein Beispiel: Ein Nutzer hatte in die Newsgroup-Runde gefragt, wie man die Zugriffe auf eine Seite protokollieren könne. Lerdorf hatte seinen neuen PHP-Werkzeugkasten empfohlen, denn genau dafür waren seine PHP Tools damals geplant. So viel Fortschritt passte nicht jedem, auch 1995 gab es schon die Fraktion mit der Überzeugung, früher sei alles besser gewesen. Ihr Vertreter in diesem Dialog hieß Alan J Flavell und hielt aus Prinzip nicht viel von Skripten: "This is a much more economical way (for you and for the network) than trying to turn every page into a script, just so that you can append some CGI environment stuff to a file of your own." Lerdorf hielt dagegen, wies zurecht darauf hin, dass serverseitige Skripte nichts mit Netzwerk-Traffic zu tun haben. Forendiskussionen waren schon vor 25 Jahren kein Vergnügen, doch Lerdorf blieb standhaft.

Die Fraktion, die vor einem zu dynamischen Web warnte und sich in eine Welt zurücksehnte, in der jede Webseite eine statische Datei auf der Festplatte war, musste in den folgenden Jahren langsam den Rückzug antreten. Lerdorf ließ sich nicht beirren, erweiterte seinen Werkzeugkasten und baute den "Form Interpreter (FI)", der mit SQL-Datenbanken sprechen konnte. Schon im Oktober 1995 entschied er sich für einen Neubau des Codes – es sollten noch einige folgen. Bis 1997 warf er noch einmal alles über den Haufen und nannte den neuen Stand PHP/FI 2.0.

Geblieben vom ersten Werkzeugkasten war nur die Idee: eine Lösung, mit der Webseitenbetreiber ihre Alltagsprobleme lösen konnten. PHP landete auf immer mehr Servern, dynamische Inhalte auf statischen Webseiten wurden zum Alltag – ein sichtbarer Besucherzähler gehörte zum Web der späten 1990er wie das animierte "Under Construction"-GIF. Der Programmierertypus der Skriptkiddies war geboren: Junge Webseitenbetreiber, die auch einen solchen Zähler haben wollten und sich PHP-Schnipsel zusammenkopierten, ohne eine Programmiersprache systematisch lernen zu wollen. Viele aus dieser Generation hatten durch PHP ihren ersten Kontakt mit Programmcode – einige verdanken der Sprache sicherlich, dass sie in die IT-Szene geraten sind. Der Vorwurf, PHP sei nur eine Spielerei für diese Art von Kindern, hält sich aber bis heute.

Den Sprung zur ernstzunehmenden Programmiersprache schaffte PHP, nachdem Andi Gutmans und Zeev Suraski 1997 mit Lerdorf Kontakt aufnahmen und zusammen an PHP 3.0, dem nächsten radikalen Neubau, arbeiteten. Die beiden wollten mit PHP in den Online-Handel einsteigen, das "Personal" in PHP musste weichen. Die Abkürzung PHP wurde zum rekursiven Akronym und stand nur noch für "PHP: Hypertext Preprocessor". In den folgenden 23 Jahren reifte die Sprache weiter, etwa mit einer optionalen Objektorientierung. Geblieben sind die schwache Typisierung und viele Altlasten aus den Anfangstagen, als man noch nicht absehen konnte, dass alle Entscheidungen mal die Basis für eine vollwertige Programmiersprache sein werden.

So sind die Diskussionen vor jeder Major-Version (mittlerweile ist der Zähler bei 7 angekommen) geprägt von der Frage, wie viel Veränderung man den Nutzern zumuten kann, ohne dass sie bei der Umstellung verzweifeln. Alte Pfade, so absurd sie auch sein mögen, werden nur ganz behutsam als deprecated markiert und dann nach Jahren verbannt.

Vieles ist so gestaltet, dass Programmiereinsteiger schnell mit der Sprache warm werden. Das gehört zum Konzept und begründet den Erfolg. An manchen Stellen aber nervt PHP wie eine moderne Fremdsprache, die über Jahrhunderte gereift ist. Unregelmäßige Vergangenheitsformen im Englischen muss der Neuling stumpf auswendig lernen, eine logische Regel gibt es nicht. Und so ist es mancherorts auch mit PHP: Dass die Funktion array_flip() ein Array als Parameter nimmt und dieses in umgekehrter Reihenfolge als Rückgabewert ausgibt, während ksort() ein Array (oder genauer eine Referenz darauf) als Parameter nimmt, sortiert und einen Boolean zurückgibt, kann man sich beim besten Willen nicht herleiten. Das muss man lernen. Und damit nicht genug: insgesamt 13 Sortierfunktionen für Arrays listet die Dokumentation auf. Vorwärts, rückwärts, natürlich und mit Groß- und Kleinschreibung – alles hat seine eigene Funktion bekommen (asort(), arsort(), krsort(), ksort(), natcasesort()).

Alle Probleme, die man sich mit schwacher Typisierung einhandeln kann, darf man an der Funktion strpos()bewundern. Sie liefert, das verspricht auch die Doku, einen Integer zurück, nämlich die Fundstelle einer $needle (zweiter Parameter) in einem $haystack (erster Parameter). Problematisch wird das, wenn das Gesuchte direkt am Anfang steht – die Antwort lautet dann "0", ohne typsicheren Vergleich (===) nicht zu unterscheiden von "0" im Sinne von "false", also "kein Treffer".

Solche Kleinigkeiten konnten dem Erfolg der Sprache nicht gefährlich werden. PHP ist die Standardausstattung in allen Webhosting-Paketen, große Projekte wie WordPress und Nextcloud basieren auf PHP. Die Sprache kann also mehr ausliefern als Code-Schnipsel in HTML-Seiten. Mit modernen PHP-Frameworks wie Laravel, Symfony, Zend oder CakePHP entstehen gute und robuste Anwendungen – allen Unkenrufen zum Trotz kann man mit PHP heute ernsthaft und effizient arbeiten.

Mit dem Sprung auf Version 7 hat sich auch an der Ausführungsgeschwindigkeit eine Menge getan. Mit dem Opcache holt man weitere Performance-Reserven heraus. Baustellen gibt es natürlich auch nach 25 Jahren noch – nicht nur bei den sprachlichen Inkonsistenzen, auch in der Nutzergemeinschaft selbst: Bei einem Blick auf die Nutzungsstatistiken von w3techs.com vergeht einem leicht der Appetit auf die 25-Jahre-Geburtstagstorte. Angeblich liefern zwar 78,9 Prozent aller Webseiten den Header "PHP" aus. Leider aber auch 37,5 Prozent in der Version 5. Die letzte Ausgabe, PHP 5.6, wurde am 1. Januar 2019 in Rente geschickt! Sicherheitsupdates gibt es seitdem nicht mehr. Selbst die behutsame Änderungsstrategie der PHP-Maintainer ist für viele Nutzer offenbar zu rasant. Wer von PHP 5.6 auf 7 umsteigen muss, kommt nicht umhin, den alten Code an einigen Stellen zu reparieren.

[Update vom 8.6.2020] Schon für den 3. Dezember 2020 ist die nächste Major-Version 8 angekündigt. Auf dem Plan stehen unter anderem ein JIT-Compiler und Union Types. [/Update]

Und heute? Die Skriptkiddies von damals sind zusammen mit PHP erwachsen geworden, vergleichbarer Nachwuchs wächst nicht mehr heran, seit Facebook und Instagram die eigene Homepage ersetzt haben. Wer heute PHP lernt, hat meist ernste Absichten. Oft steigt er mit einem der PHP-Frameworks in das Geschäft ein – oder gerät über die WordPress-Entwicklung an PHP. Die Chancen stehen gut, dass es auch zum 50. Geburtstag einen Artikel über die Sprache geben wird. Solange das Web besteht, ist auch Platz für eine serverseitige Web-Sprache wie PHP.

(jam)