... oder umgekehrt, gibt es eine Möglichkeit zu wissen, ob ein PHP-Skript in einem Webserver läuft?Gibt es eine Möglichkeit zu wissen, ob ein PHP-Skript im CLI-Modus läuft?
9
A
Antwort
27
http://www.php.net/manual/en/function.php-sapi-name.php
function is_cli()
{
return php_sapi_name() === 'cli';
}
7
Typischerweise wird, wenn in CLI-Modus ausgeführt wird, werden die superglobals und $argc
wird gesetzt, und viele der typischen Inhalt $_SERVER
(z.B. Anforderungsverfahren) nicht zur Verfügung stehen. Darüber hinaus werden vordefinierte Konsolendatenströme wie STDIN
, STDOUT
und STDERR
eingerichtet.
3
Sie könnten die $ _SERVER Variablen überprüfen ... wie:
$_SERVER['SERVER_ADDR']
Dieses leer sein wird, wenn es nicht über einen Webserver ausgeführt wird.
1
Ich schrieb einen kleinen PHP-Skript, das nur diese Zeile enthielt:
print_r($_SERVER);
Als ich es in der Kommandozeile ausgeführt, das war ein Teil meiner Ausgabe:
[email protected]:~$ php test.php
Array
(
[TERM] => xterm
[SHELL] => /bin/bash
[SSH_CLIENT] => 192.168.1.104 57547 22
[SSH_TTY] => /dev/pts/1
[USER] => rascher
[LS_COLORS] => no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.avi=01;35:*.fli=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.flac=01;35:*.mp3=01;35:*.mpc=01;35:*.ogg=01;35:*.wav=01;35:
[MAIL] => /var/mail/rascher
[PATH] => /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
[PWD] => /home/rascher
[LANG] => en_US.UTF-8
[HISTCONTROL] => ignoreboth
[SHLVL] => 1
[HOME] => /home/rascher
[LOGNAME] => rascher
[SSH_CONNECTION] => 192.168.1.104 57547 192.168.1.105 22
[LESSOPEN] => | /usr/bin/lesspipe %s
[LESSCLOSE] => /usr/bin/lesspipe %s %s
[_] => /usr/bin/php
[PHP_SELF] => test.php
[SCRIPT_NAME] => test.php
[SCRIPT_FILENAME] => test.php
[PATH_TRANSLATED] => test.php
[DOCUMENT_ROOT] =>
[REQUEST_TIME] => 1236100063
[argv] => Array
(
[0] => test.php
)
[argc] => 1
)
Laufen das gleiche auf dem Webserver gab mir das:
Array
(
[HTTP_HOST] => xxxx.com
[HTTP_USER_AGENT] => Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.6) Gecko/2009020911 Ubuntu/8.10 (intrepid) Firefox/3.0.6
[HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
[HTTP_ACCEPT_LANGUAGE] => en-us,en;q=0.5
[HTTP_ACCEPT_ENCODING] => gzip,deflate
[HTTP_ACCEPT_CHARSET] => ISO-8859-1,utf-8;q=0.7,*;q=0.7
[HTTP_KEEP_ALIVE] => 300
[HTTP_CONNECTION] => keep-alive
[HTTP_PRAGMA] => no-cache
[HTTP_CACHE_CONTROL] => no-cache
[PATH] => /sbin:/usr/sbin:/bin:/usr/bin
[SERVER_SIGNATURE] => <address>Apache/2.2.6 (Fedora) Server at xxxx.com Port 80</address>
[SERVER_SOFTWARE] => Apache/2.2.6 (Fedora)
[SERVER_NAME] => xxxx.com
[SERVER_ADDR] => 208.109.29.70
[SERVER_PORT] => 80
[REMOTE_ADDR] => 69.134.191.151
[DOCUMENT_ROOT] => /xxxx/httpdocs
[SERVER_ADMIN] => [email protected]
[SCRIPT_FILENAME] => /xxxx/args.php
[REMOTE_PORT] => 52187
[GATEWAY_INTERFACE] => CGI/1.1
[SERVER_PROTOCOL] => HTTP/1.1
[REQUEST_METHOD] => GET
[QUERY_STRING] =>
[REQUEST_URI] => /args.php
[SCRIPT_NAME] => /args.php
[PHP_SELF] => /args.php
[REQUEST_TIME] => 1236102678
)
Von Bedeutung sind diese Vars, die die nützlichsten sein könnte am Ende:
[argv] => Array
(
[0] => test.php
)
[argc] => 1
Verwandte Themen
- 1. Gibt es eine Möglichkeit zu wissen, ob Benutzer Mail öffnen?
- 2. Gibt es eine Möglichkeit zu überprüfen, ob App im Hintergrund oder Vordergrund mit ionischen läuft?
- 3. Java: Gibt es eine Möglichkeit zu wissen, ob ein InputStream eine Readonly-Datei ist
- 4. Gibt es eine Möglichkeit zu wissen, ob ein Status aktiv ist, ohne dass ContextNotActiveException abgefangen wird?
- 5. Gibt es eine Möglichkeit zu wissen, ob ein Formular minimiert wurde?
- 6. Gibt es eine Möglichkeit zu wissen, ob ein Feld java.awt.Component erweitert?
- 7. Gibt es eine einfache Möglichkeit zu wissen, ob ein modaler Dialog aktuell angezeigt wird?
- 8. Gibt es eine Möglichkeit zu wissen, ob eine Aktivität mit Espresso gestartet wurde?
- 9. Gibt es eine Möglichkeit, ein Leerzeichen im normalen Modus einzufügen?
- 10. Gibt es eine Möglichkeit zu überprüfen, ob ein istream im Binärmodus geöffnet wurde?
- 11. Gibt es eine Möglichkeit festzustellen, ob ein anderer Prozess in Vista im 32-Bit- oder 64-Bit-Modus läuft?
- 12. Gibt es eine Möglichkeit zu wissen, ob das Dropdown-Menü Tkinter optionsmenu aktiv ist?
- 13. Gibt es eine Möglichkeit zu wissen, ob das Projekt in Eclipse oder Android Studio erstellt wurde?
- 14. Gibt es eine Möglichkeit ein iPhone zu wissen, welche Netzwerk (LTE vs GSM) verbunden ist
- 15. Gibt es eine Möglichkeit herauszufinden, ob ein Thread blockiert ist?
- 16. Gibt es eine Möglichkeit zu wissen, ob Windows 7 Touch auf dem Gerät aktiv ist?
- 17. Gibt es eine Möglichkeit zu wissen, ob Deflate (oder Ihr Z_STREAM) Daten gepuffert hat? zlib C++
- 18. Gibt es eine Möglichkeit zu wissen, ob ExecutorService erfolgreich beendet wurde?
- 19. Gibt es eine Möglichkeit zu wissen, ob ein R-Skript direkt oder in einem anderen Skript ausgeführt wird?
- 20. Gibt es eine Möglichkeit zu überprüfen, ob es symbolische Links gibt, die auf ein Verzeichnis verweisen?
- 21. Gibt es eine Möglichkeit festzustellen, ob ein benutzerdefiniertes Modul existiert?
- 22. Gibt es eine Methode, um zu wissen, ob ein Verzeichnis ein Unterverzeichnis enthält?
- 23. Gibt es eine Möglichkeit zu wissen, ob eine Unicode-Zeichenfolge ein chinesisches/japanisches Zeichen in Python enthält?
- 24. Gibt es eine Möglichkeit zu überprüfen, ob mein Skript in phantomjs läuft?
- 25. Gibt es eine Möglichkeit, freigegebene Beispiele im Exunit zu verwenden?
- 26. Gibt es eine Möglichkeit zu wissen, welche Schriftarten im Web verwendet werden?
- 27. Gibt es eine Möglichkeit, ein IPhone zu "pingen", um zu sehen, ob es eingeschaltet ist?
- 28. Gibt es eine Möglichkeit zu überprüfen, ob eine native Javascript-Funktion ein Affe-Patch ist?
- 29. Gibt es eine Möglichkeit zu sagen, ob ReactElement "null" darstellt?
- 30. Gibt es eine Möglichkeit zu bestimmen, ob Browser Telefonverbindungen
Dies ist nicht die corect Antwort. Während dies manchmal funktioniert, sagt das Handbuch: "Obwohl nicht erschöpfend, beinhalten die möglichen Rückgabewerte aolserver, apache, apache2filter, apache2handler, caudium, cgi (bis PHP 5.3), cgi-fcgi, cli, cli-server, continuity, embed, fpm-fcgi, isapi, litespeed, milter, nsapi, phttpd, pi3web, roxen, thttpd, tux und webjames. * " – machineaddict