php_sapi_name
php_sapi_name()
Gibt den Namen der Schnittstelle zurück, über die PHP läuft: „cli“ auf der Kommandozeile, „apache2handler“ als Apache-Modul, „fpm-fcgi“ unter PHP-FPM, „cgi-fcgi“ über FastCGI. Die Konstante PHP_SAPI hat denselben Wert.
Beispiele
var_dump(php_sapi_name() === PHP_SAPI); // bool(true)
// ein Skript nur für die Kommandozeile oder Cron
function command_line_only() {
if (php_sapi_name() !== "cli") {
http_response_code(403);
exit("Nur über die Kommandozeile starten.");
}
}
// command_line_only();
// das Zeilenende je nach Umgebung
$eol = PHP_SAPI === "cli" ? PHP_EOL : "<br>";
Worauf Sie achten sollten
- Der eingebaute Server (php -S) liefert „cli-server“, nicht „cli“.
- Auf der Kommandozeile fehlen die Daten der Anfrage: $_SERVER["HTTP_HOST"], $_SERVER["REQUEST_URI"], Cookies, das Session-Cookie. Ein Cron-Skript darf sich nicht auf sie verlassen.
- Sicherer ist es, Cron-Skripte außerhalb des öffentlichen Ordners der Website abzulegen. Die Prüfung von php_sapi_name() ist eine zusätzliche Absicherung.
- Auf der Kommandozeile ist max_execution_time 0, und oft wird eine andere php.ini als für das Web verwendet.
Verwandte Funktionen:
phpversion()
getenv()
http_response_code()
getopt()