Ich habe ein PHP-Skript, das feststellen muss, ob es über die Befehlszeile oder über HTTP ausgeführt wurde, hauptsächlich für Ausgabeformatierungszwecke. Was ist der kanonische Weg, dies zu tun? Ich hatte gedacht, es wäre zu inspizieren SERVER['argc']
, aber es stellt sich heraus, dass dies ausgefüllt ist, selbst wenn die Server-API 'Apache 2.0 Handler' verwendet wird.
quelle
Das wird immer funktionieren. (Wenn die PHP-Version 4.2.0 oder höher ist)
Das macht es einfach, oben in Ihren Skripten zu verwenden:
quelle
CLI or die('not allowed');
CLI or die('not allowed');
ist es perfekt.Which makes it easy to use at the top of your scripts
klingt nicht wirklich nach zwei getrennten Verwendungen. Ja, ich bin ein Nekromant.Hier ist die Implementierung von Drupal 7: drupal_is_cli () :
Drupal 8 empfiehlt jedoch die Verwendung
PHP_SAPI === 'cli'
quelle
Meiner Ansicht nach
wird nicht von der CLI ausgefüllt.
Außerdem werden nicht alle HTTP_ * -Schlüssel im Superglobal $ _SERVER aus der CLI ausgefüllt, oder machen Sie es richtig, wie gerade erwähnt :-)
quelle
Auf der Dokumentationsseite für
php_sapi
_name wird klar angegeben, wie es funktioniert:Ich bin mir nicht sicher, warum Hop nicht glaubt, dass PHP für ernsthafte Programmierer gedacht ist (ich bin ein ernsthafter Programmierer und verwende PHP täglich), aber wenn er bei der Klärung der Dokumentation helfen möchte, kann er möglicherweise alle möglichen Webserver prüfen dass PHP ausgeführt werden kann und die Namen aller möglichen Schnittstellentypen für jeden Server ermittelt. Stellen Sie einfach sicher, dass diese Liste auf dem neuesten Stand ist, wenn neue Webserver und Schnittstellen hinzugefügt werden.
Außerdem sagte Bobby:
Die Beschreibung für das Beispiel lautet:
quelle