Есть ли способ узнать, работает ли скрипт php в режиме cli?

… или наоборот, есть ли способ узнать, работает ли PHP-скрипт внутри веб-сервера?

http://www.php.net/manual/en/function.php-sapi-name.php

function is_cli() { return php_sapi_name() === 'cli'; } 

Как правило, при работе в режиме CLI будут установлены суперглобалы $argv и $argc , и многие из типичного содержимого $_SERVER (например, метод запроса) будут недоступны. Кроме того, будут настроены предустановленные потоки консоли, такие как STDIN , STDOUT и STDERR .

Вы можете проверить переменные $ _SERVER … например:

 $_SERVER['SERVER_ADDR'] 

Это будет пустым, если он не будет выполнен через веб-сервер.

Я написал небольшой скрипт php, который содержал только эту строку:

 print_r($_SERVER); 

Когда я выполнил его в командной строке, это было частью моего вывода:

 rascher@eggs:~$ 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 ) - rascher@eggs:~$ 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 ) на rascher@eggs:~$ 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 ) 

Запуск того же самого на веб-сервере дал мне следующее:

 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] => jpg@gfhome.com [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 ) 

Следует отметить, что эти вары, которые могут оказаться наиболее полезными:

 [argv] => Array ( [0] => test.php ) [argc] => 1