Signatur
Beschreibung
php_sapi_name() liefert einen Kleinbuchstaben-String, der das aktive PHP-Interface zwischen PHP und dem Webserver (bzw. der Laufzeitumgebung) identifiziert. Typische Rückgabewerte sind cli (Kommandozeile), cli-server (eingebauter Entwicklungsserver), fpm-fcgi (PHP-FPM), apache2handler (mod_php unter Apache) oder cgi-fcgi (klassisches CGI/FastCGI).
Die Funktion ist vor allem nützlich, wenn sich das Verhalten eines Skripts je nach Ausführungskontext unterscheiden soll – etwa um festzustellen, ob ein Skript auf der Kommandozeile oder im Webserver-Kontext läuft. Das ermöglicht z. B. unterschiedliche Fehlerausgaben, Ausgabepuffer-Strategien oder das Verhindern von CLI-only-Operationen im Webkontext.
Als Alternative steht die Konstante PHP_SAPI bereit, die denselben Wert enthält und als Konstante etwas schneller aufgelöst werden kann, da kein Funktionsaufruf nötig ist.
Beachte, dass der genaue String SAPI-abhängig ist und sich zwischen PHP-Versionen oder Buildkonfigurationen unterscheiden kann. Prüfungen sollten daher robust formuliert werden (z. B. strpos statt striktem Vergleich, wenn mehrere CGI-Varianten abgedeckt werden sollen).
Rückgabewert
false zurückgegeben.Beispiele
CLI-Kontext erkennen und reagieren
<?php
$sapi = php_sapi_name();
if ($sapi === 'cli') {
echo "Skript wird auf der Kommandozeile ausgeführt." . PHP_EOL;
} else {
echo "Skript läuft im Webserver-Kontext (SAPI: {$sapi}).";
}
Mehrere SAPI-Typen unterscheiden
<?php
function getSapiKind(): string
{
$sapi = PHP_SAPI; // Konstante ist äquivalent zu php_sapi_name()
if ($sapi === 'cli' || $sapi === 'phpdbg') {
return 'Kommandozeile';
}
if (str_contains($sapi, 'fcgi') || $sapi === 'fpm-fcgi') {
return 'FastCGI / PHP-FPM';
}
if (str_contains($sapi, 'apache')) {
return 'Apache (mod_php)';
}
return 'Unbekannt / Sonstiges';
}
echo getSapiKind() . PHP_EOL;
// Beispielausgabe (abhängig von der Umgebung):
// FastCGI / PHP-FPM
Verwendung der Konstante PHP_SAPI
<?php
// PHP_SAPI ist identisch mit php_sapi_name(), aber als Konstante schneller
echo PHP_SAPI . PHP_EOL; // z. B. "cli"
echo php_sapi_name() . PHP_EOL; // identische Ausgabe
// Wichtig · Fallstricke
Portabilität: Verlasse dich nicht auf einen fixen String-Vergleich, wenn dein Code unter unterschiedlichen Server-Konfigurationen laufen soll. Die SAPI-Bezeichner können je nach Plattform oder Build leicht variieren (z. B. cgi vs. cgi-fcgi).
Performance: Da PHP_SAPI eine Konstante ist, die beim PHP-Start gesetzt wird, ist ihr Zugriff minimal schneller als ein Funktionsaufruf. In performance-kritischem Code ist die Konstante daher vorzuziehen.
Sicherheit: Verwende php_sapi_name() niemals als einzigen Sicherheitsmechanismus (z. B. um Admin-Skripte nur für CLI zugänglich zu machen), da der SAPI-Name unter bestimmten Umständen manipulierbar sein kann. Setze zusätzlich Datei-System-Berechtigungen oder Webserver-Konfigurationen ein.