Aktuelle Lage: PHP2Shell. Zwei kritische PHP-Lücken (CVSS 9.2) erlauben Schadcode ohne Anmeldung. Patches seit 21.10.2026.Was jetzt zu tun ist →

SAPI erklärt: Wie PHP mit dem Webserver spricht

Die SAPI ist die Schnittstelle zwischen PHP und Webserver. Sie bestimmt, wie Anfragen ankommen, welche php.ini gilt und was nach einem Update neu starten muss.

Stand 4 Min. LesezeitPHP-Wissen

Kurz gesagt: SAPI steht für Server Application Programming Interface, die Schnittstelle, über die PHP mit seiner Umgebung spricht. Typische SAPIs sind fpm-fcgi (PHP-FPM), apache2handler (mod_php), cgi-fcgi (php-cgi), litespeed und cli für die Kommandozeile. Die SAPI bestimmt, wie Anfragen ankommen, welche php.ini gilt und welche Prozesse nach einem Update neu starten müssen. Bei PHP2Shell hängt sogar die Risikoeinstufung davon ab.

Was ist eine SAPI?

PHP selbst ist ein Programm, das Code ausführt. Damit es Webseiten ausliefern kann, braucht es eine Verbindung zu einem Webserver, zur Kommandozeile oder zu einer anderen Anwendung. Diese Verbindung ist die SAPI. Sie nimmt Anfragedaten entgegen, reicht sie an die Zend Engine weiter und gibt die Ausgabe zurück.

Man kann sich die SAPI wie einen Stecker vorstellen: Der Motor bleibt gleich, aber je nach Stecker passt er an Apache, an Nginx über FastCGI, an LiteSpeed oder an das Terminal. Jede Variante hat eigene Stärken, eigene Konfigurationswege und eigene Fallstricke.

Die SAPI entscheidet vor allem über drei Dinge, die im Alltag zählen:

  1. Prozessmodell: Läuft PHP im Webserver, als eigener Dienst mit dauerhaften Workern oder als kurzlebiger Prozess je Aufruf?
  2. Konfiguration: Welche php.ini wird gelesen, und wo dürfen zusätzliche Einstellungen stehen, etwa in .htaccess, in einer .user.ini oder im FPM-Pool?
  3. Rechte und Trennung: Unter welchem Benutzer läuft der Code, und lassen sich mehrere Websites voneinander trennen?

In Hosting-Panels tauchen SAPIs unter anderen Namen auf. Plesk spricht zum Beispiel von PHP-Handlern wie „FPM application“, „FastCGI application“ oder „Apache module“. Gemeint sind dieselben Betriebsarten, die diese Seite beschreibt. Im Zweifel hilft die Prüfdatei weiter unten, die den tatsächlichen SAPI-Namen anzeigt.

Welche PHP-SAPIs gibt es?

Das PHP-Handbuch nennt für php_sapi_name() unter anderem diese Rückgabewerte: apache, apache2handler, cgi (bis PHP 5.3), cgi-fcgi, cli, cli-server, embed, fpm-fcgi, litespeed und phpdbg. Die Liste ist ausdrücklich nicht abschliessend.

SAPI-Name Betriebsart Typischer Einsatz Prozessmodell
fpm-fcgi PHP-FPM Nginx, Apache mit proxy_fcgi, Hosting-Panels eigener Dienst mit Worker-Pools
apache2handler mod_php ältere Apache-Server, einfache Docker-Images PHP im Apache-Prozess
cgi-fcgi php-cgi Altinstallationen, manche Windows-Setups Prozess je Anfrage oder FastCGI
litespeed LSAPI LiteSpeed-Webserver, viele Shared-Hoster eigene PHP-Prozesse
cli Kommandozeile Cronjobs, Composer, Wartungsskripte ein Prozess je Aufruf
cli-server eingebauter Webserver nur lokale Entwicklung (php -S) ein Entwicklungsserver
embed eingebettet PHP in anderen Programmen abhängig vom Programm
phpdbg Debugger Fehlersuche interaktiv

FrankenPHP ist ein moderner Anwendungsserver, der PHP direkt einbettet. Er ist ebenfalls von PHP2Shell betroffen und hat eigene Update-Wege; Details unter FrankenPHP absichern.

So prüfen Sie die SAPI Ihres Servers

Die SAPI einer Website erfahren Sie nur über den Webserver, nicht über die Kommandozeile. Eine kleine Prüfdatei genügt:

<?php
// sapi-check.php: nach dem Aufruf sofort wieder löschen
header('Content-Type: text/plain');
echo PHP_SAPI, "\n", PHP_VERSION, "\n", php_ini_loaded_file(), "\n";

Auf der Kommandozeile lassen sich die installierten Varianten und Dienste lesend erfassen:

php -r 'echo PHP_SAPI, PHP_EOL;'          # immer "cli"
ls /usr/sbin/php-fpm* 2>/dev/null           # installierte FPM-Versionen
systemctl list-units --type=service | grep -i -E "php|lsws|apache2|httpd"
apachectl -M 2>/dev/null | grep -i php     # mod_php geladen?

Warum jede SAPI ihre eigene php.ini haben kann

Laut PHP-Handbuch sucht PHP zuerst nach einer Datei php-SAPI.ini, also etwa php-cli.ini, und erst danach nach php.ini. Distributionen wie Debian und Ubuntu gehen weiter und legen je SAPI eigene Ordner an, zum Beispiel /etc/php/8.3/fpm/ und /etc/php/8.3/cli/.

Auch der Zeitpunkt unterscheidet sich: Bei Servermodulen liest PHP die Konfiguration laut Handbuch nur einmal beim Start des Webservers, bei CGI und CLI bei jedem Aufruf. Wer eine Einstellung ändert, muss deshalb wissen, welche SAPI betroffen ist. Mehr dazu unter Die php.ini erklärt.

SAPI und Sicherheit: was PHP2Shell gezeigt hat

Von PHP2Shell sind laut den Meldungen PHP-FPM, Apache mit mod_php, php-cgi, FrankenPHP und LiteSpeed betroffen. Das PHP-Team stuft das Risiko bei mod_php am höchsten ein, weil dort ein Exploit gezeigt wurde, bevor Anwendungscode läuft. Die Gründe stehen unter Warum mod_php das höchste Risiko trägt.

Für den Betrieb bedeutet die SAPI vor allem eines: Sie bestimmt, was nach dem Update neu starten muss.

  1. PHP-FPM: alle Pools und Worker jeder installierten Version
  2. mod_php: der komplette Apache-Dienst, nicht nur ein Reload
  3. php-cgi und FastCGI-Setups: alle verbliebenen PHP-Prozesse
  4. LiteSpeed: die PHP-Prozesse des Webservers laut Anleitung des Anbieters
  5. CLI: keine Dauerprozesse, aber Paket mit aktualisieren, damit Prüfungen stimmen

Mittelfristig lohnt der Wechsel weg von mod_php. Das PHP-Handbuch empfiehlt für neue Apache-Installationen PHP-FPM mit mod_proxy_fcgi. Die Grundlagen beschreibt PHP-FPM erklärt.

Wie hilft PHP SOS konkret?

  • SAPIs erfassen: Wir ermitteln für jeden Server, welche Betriebsarten und PHP-Versionen tatsächlich aktiv sind.
  • Richtig neu starten: Über den PHP-Patch-Service aktualisieren wir jede SAPI und belegen den Neustart aller Prozesse.
  • Konfiguration zuordnen: Wir zeigen, welche php.ini und welche Pool-Einstellungen für Ihre Website gelten.
  • Umstieg planen: Wo mod_php oder php-cgi läuft, planen und testen wir den Wechsel auf PHP-FPM.

Häufige Fragen

Wie finde ich heraus, welche SAPI meine Website nutzt?

Am zuverlässigsten mit einer kurzzeitig abgelegten Prüfdatei, die PHP_SAPI oder php_sapi_name() ausgibt, über den Webserver aufgerufen. Auf der Kommandozeile erhalten Sie immer cli, das sagt über die Website nichts aus. Danach die Prüfdatei sofort löschen.

Welche SAPI ist die sicherste?

Keine ist von sich aus sicher. PHP-FPM bietet aber die meisten Werkzeuge zur Trennung: eigene Pools, Benutzer und gesperrte Einstellungen je Website. Das PHP-Handbuch rät für neue Apache-Installationen ausdrücklich zu PHP-FPM statt mod_php.

Ist die Kommandozeilen-Version von PHP2Shell betroffen?

Die bekannten Meldungen nennen PHP-FPM, mod_php, php-cgi, FrankenPHP und LiteSpeed. Die CLI verarbeitet keine Anfragen aus dem Netz. Sie stammt aber meist aus derselben Paketquelle und sollte immer mit aktualisiert werden, schon damit Prüfbefehle den richtigen Stand zeigen.

Kann ein Server mehrere SAPIs gleichzeitig nutzen?

Ja, das ist sogar üblich. Fast jeder Server hat neben der Web-SAPI die CLI für Cronjobs und Wartung. Oft laufen zusätzlich mehrere PHP-FPM-Versionen parallel. Jede davon muss einzeln aktualisiert und neu gestartet werden.

Quellen

Sofort-Kontakt

Jede Stunde zählt. Schreiben Sie uns jetzt.

Schildern Sie kurz System, PHP-Version und Beobachtung. Wir melden uns, klären die Lage und arbeiten remote, bis der Vorfall abgeschlossen und dokumentiert ist.

Sofort-Hilfe