Ist PHP in C oder C++ geschrieben? Die Wahrheit hinter der PHP-Engine

Teilen

Wenn du dich fragst, ob PHP in C oder C++ geschrieben ist, dann bist du nicht allein. Viele Entwickler, die PHP seit Jahren nutzen, wissen es nicht genau. Und das ist verständlich - PHP ist eine Sprache, die du meistens als abstrakte Oberfläche benutzt. Du schreibst echo "Hallo Welt"; und es funktioniert. Aber was passiert eigentlich unter der Haube? Woher kommt die Geschwindigkeit? Warum läuft PHP auf so vielen Servern? Die Antwort liegt in einer Sprache, die du vielleicht nicht oft siehst: C.

PHP ist in C geschrieben - nicht in C++

Die Kern-Engine von PHP, die Zend Engine, ist komplett in C geschrieben. Das gilt für alle gängigen Versionen von PHP, von PHP 5 bis PHP 8.3. Es gibt keine signifikanten Teile der Core-Engine, die in C++ implementiert sind. Das ist kein Zufall. C wurde gewählt, weil es nahe an der Hardware arbeitet, extrem portabel ist und sich gut mit Webservern wie Apache oder Nginx integrieren lässt - alles Systeme, die selbst in C oder Assembly geschrieben sind.

Die Entscheidung, C zu nutzen, war technisch und historisch begründet. Rasmus Lerdorf, der Erfinder von PHP, begann 1994 mit einfachen Perl-Skripten, um seinen Lebenslauf online zu stellen. Als die Anforderungen wuchsen, baute er eine C-basierte Erweiterung für den Webserver, die später zur PHP-Engine wurde. Damals war C++ noch nicht so verbreitet, besonders nicht in Serverumgebungen. C war die sichere, schnelle und weit verbreitete Wahl.

Heute ist PHP 8.3 weiterhin auf C basierend. Die Zend Engine, die den Code kompiliert, optimiert und ausführt, besteht aus über 200.000 Zeilen C-Code. Das ist nicht nur eine kleine Komponente - das ist das Herzstück von PHP. Jede Funktion, die du verwendest, wie strlen(), json_encode() oder file_get_contents(), ruft letztendlich C-Funktionen auf, die direkt im PHP-Quellcode implementiert sind.

Warum nicht C++? Die Gründe liegen in der Praxis

Du denkst vielleicht: C++ ist moderner, objektorientiert, hat bessere Abstraktionen - warum nicht das nutzen? Die Antwort ist einfach: Es braucht es nicht.

C++ bringt zusätzliche Komplexität mit sich: Namensverfremdung (name mangling), Ausnahmen, RTTI, Konstruktoren/Destruktoren - alles Dinge, die die Interoperabilität mit anderen Systemen erschweren. PHP muss mit C-Bibliotheken wie libcurl, OpenSSL, GD und MySQL Client Library arbeiten. Diese sind alle in C geschrieben. Wenn PHP in C++ geschrieben wäre, müsste man eine komplexe Schicht zwischen C++ und C aufbauen - und das nur, um ein paar objektorientierte Merkmale zu nutzen. Das wäre unnötiger Overhead.

Ein weiterer Grund: Performance. C erlaubt es Entwicklern, genau zu kontrollieren, wie Speicher zugewiesen und freigegeben wird. In PHP wird jede Anfrage kurzlebig - ein Benutzer lädt eine Seite, PHP führt den Code aus, gibt den Speicher frei und beendet den Prozess. Diese Art von Arbeit ist perfekt für C, das keine Garbage Collection braucht und keine Laufzeitumgebung mit hohem Overhead erfordert. C++-Basierende Systeme wie PHP-FPM oder HHVM (HipHop Virtual Machine) haben zwar versucht, mit C++ mehr Performance zu erreichen, aber die Core-Sprache blieb C.

HHVM, das von Facebook entwickelt wurde, war eine Ausnahme - es nutzte C++ für seine JIT-Compiler-Engine. Aber selbst da war die PHP-Syntax-Parser-Logik und die meisten Erweiterungen weiterhin auf C basierend. HHVM wurde 2024 offiziell eingestellt. PHP 8.3 läuft weiterhin auf C - und das bleibt so.

Was ist mit PHP-Erweiterungen? Sind die auch in C?

Ja. Fast alle offiziellen PHP-Erweiterungen - wie MySQLi, PDO, GD, cURL, OpenSSL, ZIP, und sogar die neue JIT-Engine in PHP 8 - sind in C geschrieben. Du kannst das selbst prüfen: Gehe auf github.com/php/php-src und schau dir den Ordner ext/ an. Jede Datei dort endet auf .c - nicht .cpp.

Das ist kein Zufall. PHP-Erweiterungen müssen direkt mit der Zend Engine kommunizieren. Sie greifen auf interne Strukturen wie zval, HashTable oder zend_function zu - alles C-Strukturen, die nicht mit C++-Klassen kompatibel sind. Selbst wenn du eine Erweiterung in C++ schreiben würdest, müsstest du eine C-Schnittstelle (extern "C") bauen, um sie mit PHP zu verbinden. Warum also nicht gleich in C schreiben?

Einige Entwickler versuchen, PHP-Erweiterungen in C++ zu schreiben - oft aus Gewohnheit oder weil sie C++ besser kennen. Aber das ist eine unnötige Komplexität. Die offizielle Dokumentation von PHP empfiehlt klar: Schreibe Erweiterungen in C. Die PHP-Community akzeptiert nur C-basierte Erweiterungen für den offiziellen Core. C++-Erweiterungen sind möglich, aber sie sind nicht standardisiert, schwer zu warten und werden nicht in PHP-Release-Bundles aufgenommen.

Mechanische Herzstruktur aus C-Code und Messingzahnrädern in einem Server-Rack

PHP und die Zukunft: Wird es jemals in C++ geschrieben?

Nein. Nicht in absehbarer Zeit.

Die PHP-Entwicklergruppe hat mehrfach klargestellt: Der Fokus liegt auf Performance, Stabilität und Kompatibilität - nicht auf Sprachwechsel. PHP 8.0 brachte JIT, PHP 8.1 führte Enums und Readonly Properties ein, PHP 8.2 verbesserte die Typsicherheit. Alle diese Funktionen wurden in C implementiert. Die Community hat kein Interesse daran, das Fundament zu wechseln.

Ein Wechsel zu C++ würde bedeuten:

  • Alle bestehenden Erweiterungen müssten neu geschrieben werden
  • Alle Server-Installationen müssten neu kompiliert werden
  • Alle Hosting-Anbieter müssten ihre Systeme anpassen
  • Die Kompatibilität mit Millionen bestehender Webseiten wäre gefährdet

Das ist kein Upgrade - das wäre ein Neustart. Und niemand will das. PHP ist nicht mehr nur eine Sprache - es ist eine Infrastruktur. Über 77% aller Webseiten mit bekannter Server-Sprache nutzen PHP, laut W3Techs (Stand 2025). Ein Sprachwechsel wäre wirtschaftlich und technisch unverantwortlich.

Die Zukunft von PHP liegt nicht in einer neuen Programmiersprache, sondern in besseren Optimierungen innerhalb von C: bessere JIT-Kompilierung, weniger Speicherzuweisungen, schnellere Hash-Tabellen. PHP 8.4, das für 2026 geplant ist, wird diese Optimierungen weiter vorantreiben - alles in C.

Wie du das selbst überprüfen kannst

Du musst nicht nur glauben, was ich sage. Hier ist, wie du es selbst prüfen kannst:

  1. Gehe zu https://github.com/php/php-src
  2. Öffne den Ordner main/ - dort findest du den Kern des PHP-Interpreters
  3. Öffne php_main.c - das ist die Hauptdatei, die den Prozess startet
  4. Suche nach Funktionen wie php_execute_script() oder zend_execute()
  5. Sie sind alle in C geschrieben - keine C++-Syntax, keine class, keine new, keine std::

Wenn du dich für Erweiterungen interessierst, geh in den Ordner ext/standard/. Dort findest du die Standardfunktionen von PHP - strlen.c, array.c, string.c. Alle C-Dateien. Keine C++-Dateien in Sicht.

Das ist kein Geheimnis - es ist öffentlich dokumentiert. Die PHP-Dokumentation sagt klar: "The PHP interpreter is written in C."

Baum mit Wurzeln aus C und Ästen aus PHP-Erweiterungen auf weißem Hintergrund

Was bedeutet das für dich als Entwickler?

Dass PHP in C geschrieben ist, hat direkte Auswirkungen auf deine Arbeit:

  • Performance: PHP ist schnell, weil es nahe an der Hardware arbeitet - nicht weil es eine moderne Sprache ist.
  • Stabilität: C ist alt, aber extrem zuverlässig. PHP läuft seit 30 Jahren auf Millionen Servern - und das, weil C nicht ständig seine Regeln ändert.
  • Debugging: Wenn du einen Segfault bekommst, liegt er oft an einer C-Erweiterung, nicht an deinem PHP-Code. Du brauchst Tools wie GDB, nicht nur Xdebug.
  • Erweiterungen: Wenn du eine eigene Erweiterung schreiben willst - lerne C. Nicht C++, nicht Rust, nicht Go. C.

Es ist kein Nachteil - es ist eine Stärke. PHP ist nicht perfekt. Aber es ist robust, schnell und funktioniert. Und das liegt an C.

Was ist mit anderen Sprachen wie Python oder Ruby?

Ein häufiger Vergleich: "Python ist in C geschrieben, also ist PHP wie Python?" Richtig - aber mit einem Unterschied. Python nutzt eine virtuelle Maschine (CPython) mit Bytecode-Interpretation. PHP nutzt eine direkte Compilation in Zend OPcode - ohne Zwischencode. Beide sind in C, aber die Architektur ist anders.

Ruby hingegen hat seine eigene VM (YARV), die in C geschrieben ist, aber mit viel mehr Dynamik. PHP ist simpler, schneller und weniger abstrakt - genau weil es auf C basiert und nicht auf einer komplexeren VM.

Wenn du also PHP mit anderen Sprachen vergleichst, denk nicht an ihre Syntax - denk an ihre Grundlage. PHP ist C mit einer einfachen Syntax. Das ist sein Erfolg.

Ist PHP in C++ geschrieben?

Nein. Die PHP-Engine (Zend Engine) und alle offiziellen Erweiterungen sind vollständig in C geschrieben. Es gibt keine signifikanten Teile von PHP, die in C++ implementiert sind. C++ wurde aus Gründen der Kompatibilität, Performance und Einfachheit vermieden.

Warum wurde C für PHP gewählt und nicht eine modernere Sprache?

C wurde gewählt, weil es 1994 die beste Wahl für Webserver-Integration war: es ist portabel, schnell, hat geringen Overhead und arbeitet direkt mit Systembibliotheken wie MySQL und OpenSSL. Moderne Sprachen wie Rust oder Go waren damals nicht verfügbar. Heute wäre C++ eine Option - aber der Aufwand, die gesamte Infrastruktur umzustellen, wäre unverhältnismäßig groß.

Kann man PHP-Erweiterungen in C++ schreiben?

Technisch ja - aber es ist nicht empfohlen. Du müsstest eine C-Schnittstelle (extern "C") bauen, um mit der Zend Engine zu kommunizieren. Die PHP-Community akzeptiert nur C-basierte Erweiterungen für den offiziellen Core. C++-Erweiterungen sind schwer zu warten, nicht standardisiert und werden nicht in offizielle Releases aufgenommen.

Ist PHP langsamer, weil es in C geschrieben ist?

Nein - im Gegenteil. C ermöglicht direkten Zugriff auf Speicher und Hardware, was PHP sehr schnell macht. Sprachen wie Python oder Ruby, die ebenfalls in C geschrieben sind, sind langsamer, weil sie eine VM und komplexere Abstraktionen nutzen. PHP hat weniger Overhead - das macht es effizienter.

Wird PHP jemals in Rust oder Go geschrieben?

Unwahrscheinlich. PHP ist keine experimentelle Sprache - es ist eine kritische Infrastruktur für Millionen Webseiten. Ein Wechsel der Grundlage würde die Kompatibilität brechen und Millionen von Servern beeinträchtigen. Die Entwickler konzentrieren sich auf Optimierungen innerhalb von C, nicht auf einen kompletten Neustart.

Über den Autor

Sonja Meierhof

Sonja Meierhof

Ich bin Sonja Meierhof und ich habe eine Leidenschaft für Entwicklung. Als Expertin in meinem Feld habe ich zahlreiche Projekte in verschiedenen Programmiersprachen umgesetzt. Ich liebe es, mein Wissen durch das Schreiben von Fachartikeln zu teilen, besonders im Bereich Softwareentwicklung und innovative Technologien. Stetig arbeite ich daran, meine Fähigkeiten zu erweitern und neue Programmierkonzepte zu erforschen.