......或者相反,有沒有什麼辦法可以知道一個php腳本是否在web服務器中運行?有沒有什麼辦法知道一個PHP腳本是否在cli模式下運行?
9
A
回答
27
http://www.php.net/manual/en/function.php-sapi-name.php
function is_cli()
{
return php_sapi_name() === 'cli';
}
7
通常,在CLI模式下運行時,超全球變體和$argc
將被設置,並且許多$_SERVER
(例如請求方法)的典型內容將不可用。另外,將會設置預定義的控制檯流,例如STDIN
,STDOUT
和STDERR
。
3
你可以檢查$ _SERVER變量...如:
$_SERVER['SERVER_ADDR']
如果不通過網絡服務器執行這將是空的。
1
我寫了一個小PHP腳本,只包含此行:
print_r($_SERVER);
當我在命令行中執行它,這是我輸出的一部分:
[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
)
在網絡服務器上運行同樣的東西給了我這個:
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
)
注意的是這些增值經銷商,這最終可能是最有用的:
[argv] => Array
(
[0] => test.php
)
[argc] => 1
相關問題
- 1. Python:有什麼辦法可以知道在哪個virtualenv腳本運行?
- 2. 有沒有辦法知道我的webrole在什麼環境下運行?
- 3. 有沒有辦法知道一個ftp shell腳本失敗?
- 4. 是否在安全模式下運行PHP有什麼區別?
- 5. 有沒有辦法確定GWT代碼是否在開發模式下運行?
- 6. 有沒有辦法看到一個PHP腳本最後一次運行?
- 7. 有沒有辦法在只讀模式下運行git?
- 8. 有沒有辦法知道手機是否有通話?
- 9. 有沒有辦法知道一個對象的C#方法是否被調用?
- 10. 一個PHP cli腳本可以檢測到另一個PHP cli腳本是否正在運行?
- 11. 有沒有辦法檢查我的腳本是否在phantomjs中運行?
- 12. 有沒有辦法讓linqpad知道一個字段是主鍵?
- 13. 有沒有辦法用一個「模式」
- 14. 有沒有辦法知道是否已經創建了IWin32Window?
- 15. 有沒有辦法知道Data Saver是否啓用?
- 16. 有沒有辦法知道ExecutorService是否成功結束?
- 17. 有沒有辦法知道異常是否被禁用?
- 18. 有沒有辦法知道用戶是否打開郵件?
- 19. 有沒有辦法知道rxjs websocket是否打開
- 20. 有沒有辦法知道Flash Player是否安裝了SWFObject?
- 21. 有沒有辦法知道一個實體是否由NHibernate管理?
- 22. 有沒有什麼辦法可以知道一個按鈕沒有按下確定的時間點擊?
- 23. 有沒有辦法告訴PHP腳本是否沒有被修改?
- 24. 有沒有辦法在iOS上運行腳本?
- 25. 有沒有辦法從powershell腳本運行可執行文件?
- 26. 有沒有辦法知道函數是否返回到PHP中的變量?
- 27. 如何知道FastCGI是否被用來運行PHP腳本
- 28. 在PHP中 - 有沒有辦法知道fsockopen何時超時?
- 29. 有沒有辦法讓webpack知道全局是否沒有聲明?
- 30. 有沒有辦法檢查下一個令牌是否結束?
這不是corect答案。雖然有時候這是有效的,但手冊說:「*雖然不詳盡,但可能的返回值包括aolserver,apache,apache2filter,apache2handler,caudium,cgi(直到PHP 5.3),cgi-fcgi,cli,cli-server,continuity,embed, fpm-fcgi,isapi,litespeed,milter,nsapi,phttpd,pi3web,roxen,thttpd,tux和webjames。*「 – machineaddict 2016-04-04 14:02:51