Frage

Ich habe versucht, Dinge wie $ _ENV [ ‚CLIENT‘] == ‚Console‘, aber das scheint nur bestimmte Betriebssysteme (in den Fenstern gearbeitet, nicht Linux) zu arbeiten.

Ich habe versucht! Empty ($ _ ENV [ 'SHELL']), aber das immer funktioniert auch nicht ...

Gibt es eine Möglichkeit, dies zu überprüfen, die in allen OS / Umgebungen funktionieren wird?

War es hilfreich?

Lösung

Verwenden Sie php_sapi_name()

  

Gibt eine Zeichenfolge, die Klein   beschreibt die Art der Schnittstelle (die   Server-API, SAPI), dass PHP verwendet.   Zum Beispiel in CLI PHP diese Zeichenfolge   wird „cli“, während mit Apache es   kann mehrere verschiedene Werte   abhängig von dem verwendeten genauen SAPI.

Zum Beispiel:

$isCLI = ( php_sapi_name() == 'cli' );

Sie können auch die Konstante PHP_SAPI verwenden

Andere Tipps

Überprüfen Sie auf http://php.net/manual/en/features. commandline.php # 105568 "PHP_SAPI" Konstante

<?php
if (PHP_SAPI === 'cli')
{
   // ...
}
?> 

Ich weiß, dass dies eine alte Frage, aber die Ordnung halber, ich sehe HTTP-Anfragen kommen in ohne User-Agenten-Header und PHP nicht automatisch HTTP_USER_AGENT in diesem Fall definieren.

if ($argc > 0) {
    // Command line was used
} else {
    // Browser was used
}

$ argc coounts die Menge der Argumente an die Befehlszeile übergeben. Einfach php page.php verwenden, $ argc 1 zurück

Beim page.php mit einem Browser, $ argc NULL zurück

Eine Lösung besteht darin zu prüfen, ob STDIN definiert:

if (!defined("STDIN")) {
    die("Please run me from the console - not from a web-browser!");
}

Überprüfen Sie die HTTP_USER_AGENT, sollte es in HTTP-Anforderung existieren

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top