... hoặc cách khác xung quanh, có cách nào để biết liệu tập lệnh php có đang chạy bên trong máy chủ web không?Có cách nào để biết liệu một tập lệnh php có đang chạy trong chế độ cli không?
9
A
Trả lời
27
http://www.php.net/manual/en/function.php-sapi-name.php
function is_cli()
{
return php_sapi_name() === 'cli';
}
7
Thông thường, khi chạy ở chế độ CLI, các superglobals và $argc
sẽ được thiết lập, và nhiều trong số những nội dung đặc trưng của $_SERVER
(ví dụ phương pháp theo yêu cầu) sẽ không có sẵn. Ngoài ra, các luồng điều khiển được xác định trước như STDIN
, STDOUT
và STDERR
sẽ được thiết lập.
3
Bạn có thể kiểm tra các biến $ _SERVER ... như:
$_SERVER['SERVER_ADDR']
này sẽ trống nếu nó không được thực hiện thông qua một máy chủ web.
1
Tôi đã viết một kịch bản php nhỏ mà chỉ chứa dòng này:
print_r($_SERVER);
Khi tôi thực hiện nó trong dòng lệnh, đây là một phần của đầu ra của tôi:
[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
)
Chạy cùng một thứ trên máy chủ web đã cho tôi điều này:
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
)
Đáng chú ý là những vars, mà có thể kết thúc là hữu ích nhất:
[argv] => Array
(
[0] => test.php
)
[argc] => 1
Các vấn đề liên quan
- 1. Làm cách nào để biết liệu cập nhật CHẾ ĐỘ HOẠT ĐỘNG có đang chạy không?
- 2. Làm cách nào để biết tập lệnh Perl của tôi có đang chạy trong Windows không?
- 3. làm thế nào để tạo một tệp PHP chỉ có thể chạy qua chế độ CLI?
- 4. APC PHP trong chế độ CLI
- 5. Kiểm tra xem tập lệnh php có đang chạy không
- 6. Làm cách nào để biết liệu tôi có đang chạy từ JRuby và Ruby không?
- 7. Có cách nào để kiểm tra xem tập lệnh có đang chạy bởi PowerShell ISE không?
- 8. Làm thế nào để tập lệnh PHP của tôi có thể biết liệu máy chủ có bận không?
- 9. Gọi tới daemon trong tập lệnh /etc/init.d đang chặn, không chạy ở chế độ nền
- 10. Làm thế nào tôi có thể tìm ra tập lệnh PHP nào đang chạy trong Linux?
- 11. Phát hiện xem tập lệnh PHP có đang chạy tương tác hay không
- 12. biến môi trường shell xuất trước khi chạy lệnh từ tập lệnh PHP CLI
- 13. Làm cách nào để tìm hiểu, người dùng nào đang chạy tập lệnh php hiện tại?
- 14. Làm thế nào để làm cho tập lệnh php chạy một tập lệnh php khác
- 15. Có cách nào để xác định xem mã GWT có đang chạy trong chế độ phát triển không?
- 16. cách biết liệu một UITextView có tập trung hay không
- 17. Làm cách nào tôi có thể biết liệu một tập lệnh Perl có đang thực thi trong ngữ cảnh CGI không?
- 18. Làm cách nào để biết liệu một ModalViewController có đang được hiển thị?
- 19. Làm thế nào để biết chắc chắn nếu FastCGI đang được sử dụng để chạy tập lệnh php
- 20. Làm cách nào để có được đường dẫn của tập lệnh hiện đang chạy với Javascript?
- 21. cách chạy tập lệnh php trong eclipse
- 22. Có tương đương forever.js cho PHP để chạy tập lệnh của tôi liên tục không?
- 23. Tập lệnh PHP có thể bắt đầu một tập lệnh PHP khác và thoát không?
- 24. Làm cách nào để gỡ lỗi tập lệnh PHP CLI bằng xdebug?
- 25. Làm cách nào để biết liệu tắt máy hiện có đang diễn ra không?
- 26. Có thể xác định xem Chrome có đang ở chế độ ẩn danh thông qua tập lệnh người dùng không?
- 27. Chạy tập lệnh php từ dòng lệnh có biến số
- 28. Trong Python, không sử dụng hệ thống tập tin/proc, làm cách nào để biết liệu một PID đã cho có đang chạy không?
- 29. Làm cách nào để biết liệu một khách hàng web có đang chặn quảng cáo không?
- 30. Có thể biết một đối tượng có đang chạy trong một AppDomain khác không?
Đây không phải là câu trả lời corect. Trong khi đôi khi công trình này, hướng dẫn nói "* Mặc dù không đầy đủ, các giá trị trả lại có thể bao gồm aolserver, apache, apache2filter, apache2handler, caudium, cgi (cho đến PHP 5.3), cgi-fcgi, cli, cli-server, liên tục, nhúng, fpm-fcgi, isapi, litespeed, milter, nsapi, phttpd, pi3web, roxen, thttpd, tux và webjames. * " – machineaddict