PHP中 getenv()函数 (环境变量)

来源:互联网 发布:淘宝可以朋友代付吗 编辑:程序博客网 时间:2024/05/22 00:13
PHP中 getenv()函数 (环境变量)
, ^, a( v6 \+ l6 L- B
PHP中 getenv() 取得系统的环境变量(预定义变量)
CJC Delphi 技巧馆; `5 N+ e- v7 ?& Q7 [
$_SERVER['SERVER_NAME']



$spager=getenv('SERVER_NAME');
9 a# r- ?5 H* v1 h/ q
“PHP_SELF”Delphi Tip,  Delphi Skills, Delphi技巧1 z8 N; ?  f6 x) T4 N: n
当前正在执行脚本的文件名,与 document root 相关。举例来说,在 URL 地址为 http://example.com/test.php/foo.bar 的脚本中使用 $_SERVER['PHP_SELF'] 将会得到 /test.php/foo.bar 这个结果。__FILE__ 常量包含当前(例如包含)文件的绝对路径和文件名。delphi.xcjc.net) b# U0 T8 ?% V2 b
Delphi Tip,  Delphi Skills, Delphi技巧' U, F; h' C1 @* L* m9 N8 f
如果 PHP 以命令行方式运行,该变量在 PHP 4.3.0 之前无效。

“argv”
传递给该脚本的参数。当脚本运行在命令行方式时,argv 变量传递给程序 C 语言样式的命令行参数。当调用 GET 方法时,该变量包含请求的数据。
" t0 C0 v" {6 c# d  l5 W
“argc”Delphi Tips, Delphi Skills, Delphi技巧, Delphi问答, Delphi技术, cjc delphi" d7 [: a. \, @) j' q- d6 [1 L/ N
包含传递给程序的命令行参数的个数(如果运行在命令行模式)。

“GATEWAY_INTERFACE”
服务器使用的 CGI 规范的版本。例如,“CGI/1.1”。
Delphi Tip,  Delphi Skills, Delphi技巧5 u+ c) |6 ^1 W3 B- P
“SERVER_NAME”
当前运行脚本所在服务器主机的名称。如果该脚本运行在一个虚拟主机上,该名称是由那个虚拟主机所设置的值决定。

“SERVER_SOFTWARE”CJC Delphi 技巧馆, j# ]# u  ~; C8 J: D
服务器标识的字串,在响应请求时的头信息中给出。
" W5 {3 [( o8 e
“SERVER_PROTOCOL”7 z( R7 S2 F8 S8 @# w
请求页面时通信协议的名称和版本。例如,“HTTP/1.0”。Delphi Tips, Delphi Skills, Delphi技巧, Delphi问答, Delphi技术, cjc delphi8 @' y5 h- o4 X, u3 B  h

“REQUEST_METHOD”
访问页面时的请求方法。例如:“GET”、“HEAD”,“POST”,“PUT”。
Delphi Tips, Delphi Skills, Delphi技巧, Delphi问答, Delphi技术, cjc delphi. u* @6 A# R6 k3 j# ^3 Z
注: 如果请求的方式是 HEAD,PHP 脚本将在送出头信息后中止(这意味着在产生任何输出后,不再有输出缓冲)。
Delphi Tip,  Delphi Skills, Delphi技巧; Z3 h" P$ ]+ w1 ?/ r, k2 Y7 K
“REQUEST_TIME”
请求开始时的时间戳。从 PHP 5.1.0 起有效。delphi.xcjc.net; G9 h8 O- r) p& L( O! A

“QUERY_STRING”
查询(query)的字符串(URL 中第一个问号 ? 之后的内容)。Delphi Tips, Delphi Skills, Delphi技巧, Delphi问答, Delphi技术, cjc delphi& n! O* l) M& f6 |. q

“DOCUMENT_ROOT”CJC Delphi 技巧馆5 t7 g5 O" u2 F7 q; W0 y
当前运行脚本所在的文档根目录。在服务器配置文件中定义。
CJC Delphi 技巧馆8 |: k6 [$ c& e4 X- N
“HTTP_ACCEPT”CJC Delphi 技巧馆) X% W0 n, d6 v
当前请求的 Accept: 头信息的内容。0 h" t5 a. o7 T

“HTTP_ACCEPT_CHARSET”/ [5 V9 q3 Q9 {4 G; J! y/ I
当前请求的 Accept-Charset: 头信息的内容。例如:“iso-8859-1,*,utf-8”。

“HTTP_ACCEPT_ENCODING”
当前请求的 Accept-Encoding: 头信息的内容。例如:“gzip”。
  G  ]3 h6 ~% }/ V- j" r
“HTTP_ACCEPT_LANGUAGE”
当前请求的 Accept-Language: 头信息的内容。例如:“en”。) e! ?6 }  W3 c" ~* A# @- m
CJC Delphi 技巧馆( {8 M7 y% |) O: P# w. F
“HTTP_CONNECTION”
当前请求的 Connection: 头信息的内容。例如:“Keep-Alive”。
Delphi Tips, Delphi Skills, Delphi技巧, Delphi问答, Delphi技术, cjc delphi4 K- S( ~6 t( W9 j  Q
“HTTP_HOST”
当前请求的 Host: 头信息的内容。& ~. @& S1 y! ]. L2 }, V
. j4 b9 B% n4 c* B- C- m
“HTTP_REFERER”" A6 o  V5 d* O2 K' H! Y3 e$ ^
链接到当前页面的前一页面的 URL 地址。不是所有的用户代理(浏览器)都会设置这个变量,而且有的还可以手工修改 HTTP_REFERER。因此,这个变量不总是真实正确的。+ r  A6 R2 v: J+ o: a6 T' [
# U4 s5 o" u  I( ^, f) G7 v/ m
“HTTP_USER_AGENT”
当前请求的 User-Agent: 头信息的内容。该字符串表明了访问该页面的用户代理的信息。一个典型的例子是:Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586)。也可以使用 get_browser() 得到此信息。

“HTTPS”" H* ^( d8 C2 i, p2 b- m
如果脚本是通过 HTTPS 协议被访问,则被设为一个非空的值。
CJC Delphi 技巧馆& X+ y2 x. H7 ]6 c& {  _
“REMOTE_ADDR”
正在浏览当前页面用户的 IP 地址。CJC Delphi 技巧馆/ e$ }( W# I  T6 J4 l
# |" }. j! X+ a2 v
“REMOTE_HOST”
正在浏览当前页面用户的主机名。反向域名解析基于该用户的 REMOTE_ADDR。CJC Delphi 技巧馆7 z; m( }7 l  D$ W! x% }
delphi.xcjc.net  o( W/ g) N. j7 D% K1 w
注: 必须配置 Web 服务器来建立此变量。例如 Apache 需要在 httpd.conf 中有 HostnameLookups On。参见 gethostbyaddr()。

“REMOTE_PORT”
用户连接到服务器时所使用的端口。
" k# @) Z8 n0 K/ I5 U7 q
“SCRIPT_FILENAME”
当前执行脚本的绝对路径名。
8 P* C& w+ E2 o8 X6 U
注: 如果脚本在 CLI 中被执行,作为相对路径,例如 file.php 或 ../file.php,$_SERVER['SCRIPT_FILENAME'] 将包含用户指定的相对路径。
) Q; C' G3 f, _3 x/ h1 l
“SERVER_ADMIN”
该值指明了 Apache 服务器配置文件中的 SERVER_ADMIN 参数。如果脚本运行在一个虚拟主机上,则该值是那个虚拟主机的值。# e; O% B) k$ g4 V5 d4 b8 _- C
( @# [3 P& S7 k: M6 g
“SERVER_PORT”Delphi Tip,  Delphi Skills, Delphi技巧" [8 f& t  Q5 y: M& L7 [$ |2 q: @  o
服务器所使用的端口。默认为“80”。如果使用 SSL 安全连接,则这个值为用户设置的 HTTP 端口。

“SERVER_SIGNATURE”Delphi Tips, Delphi Skills, Delphi技巧, Delphi问答, Delphi技术, cjc delphi- ?# A2 ?: e( i: X) r
包含服务器版本和虚拟主机名的字符串。
Delphi Tips, Delphi Skills, Delphi技巧, Delphi问答, Delphi技术, cjc delphi. P  Y' ~) Q8 u* d& N% H* p8 J
“PATH_TRANSLATED”CJC Delphi 技巧馆* Z" H9 L1 b3 `! z4 M" I8 `  d/ j
当前脚本所在文件系统(不是文档根目录)的基本路径。这是在服务器进行虚拟到真实路径的映像后的结果。
3 U6 j+ L, V9 R. l: |
注: PHP 4.3.2 之后,PATH_TRANSLATED 在 Apache 2 SAPI 模式下不再和 Apache 1 一样隐含赋值,而是若 Apache 不生成此值,PHP 便自己生成并将其值放入 SCRIPT_FILENAME 服务器常量中。这个修改遵守了 CGI 规范,PATH_TRANSLATED 仅在 PATH_INFO 被定义的条件下才存在。
# m+ d" i" c8 \* b) y' q
Apache 2 用户可以使用 httpd.conf 中的 AcceptPathInfo On 来定义 PATH_INFO。

“SCRIPT_NAME”
包含当前脚本的路径。这在页面需要指向自己时非常有用。__FILE__ 包含当前文件的绝对路径和文件名(例如包含文件)。Delphi Tip,  Delphi Skills, Delphi技巧, v% F% h4 k1 C+ w6 o% k9 T' W, g/ _

“REQUEST_URI”$ L  q3 z- Q* a0 u
访问此页面所需的 URI。例如,“/index.html”。

“PHP_AUTH_DIGEST”
当作为 Apache 模块运行时,进行 HTTP Digest 认证的过程中,此变量被设置成客户端发送的“Authorization”HTTP 头内容(以便作进一步的认证操作)。Delphi Tips, Delphi Skills, Delphi技巧, Delphi问答, Delphi技术, cjc delphi8 B8 U, I- e# j+ W, z/ \

“PHP_AUTH_USER”
当 PHP 运行在 Apache 或 IIS(PHP 5 是 ISAPI)模块方式下,并且正在使用 HTTP 认证功能,这个变量便是用户输入的用户名。Delphi Tip,  Delphi Skills, Delphi技巧: J; B# j. J( O$ a, a5 z
CJC Delphi 技巧馆, {( b& z" ~( |( B8 X2 O  k
“PHP_AUTH_PW”
当 PHP 运行在 Apache 或 IIS(PHP 5 是 ISAPI)模块方式下,并且正在使用 HTTP 认证功能,这个变量便是用户输入的密码。! |/ q: d9 A7 [  j
Delphi Tip,  Delphi Skills, Delphi技巧4 Q2 W5 B# z) ~% |4 f
“AUTH_TYPE”
当 PHP 运行在 Apache 模块方式下,并且正在使用 HTTP 认证功能,这个变量便是认证的类型。delphi.xcjc.net5 |2 H0 t3 c- M0 R2 G& M
delphi.xcjc.net# `1 F: ?0 L6 b
<?
$array = array(
"REMOTE_ADDR",
"DOCUMENT_ROOT",
"GATEWAY_INTERFACE",. ?) j- u, d2 r* O% F; W
"SERVER_SOFTWARE",Delphi Tip,  Delphi Skills, Delphi技巧$ r" H8 N  U. }
"SERVER_NAME",
"SERVER_PROTOCOL",
"SERVER_PORT",' @7 v5 Z* \& D2 |
"SERVER_ADMIN",Delphi Tips, Delphi Skills, Delphi技巧, Delphi问答, Delphi技术, cjc delphi+ M6 J6 g: e; H# Y+ r: ~5 |* R
"SERVER_SIGNATURE",
"REQUEST_METHOD",delphi.xcjc.net( U! \% i: E# g+ w  Z
"REQUEST_URI",Delphi Tip,  Delphi Skills, Delphi技巧; D( e0 T5 E+ h( \6 x
"PATH_INFO",delphi.xcjc.net- H% i6 n/ [" }$ W
"PATH_TRANSLATED",CJC Delphi 技巧馆' B5 i3 M! Y$ L6 e
"SCRIPT_NAME",
"SCRIPT_FILENAME",Delphi Tip,  Delphi Skills, Delphi技巧3 j  `0 H( ~- F
"QUERY_STRING",delphi.xcjc.net2 e6 s, w! `3 y+ `  H' B
"REMOTE_HOST",8 s# k, \/ {8 |5 K4 n- \# w
"REMOTE_ADDR",Delphi Tip,  Delphi Skills, Delphi技巧) T  B# k, e6 Q( a' m
"REMOTE_USER",
"REMOTE_IDENT",CJC Delphi 技巧馆2 B& W5 G" h( u
"CONTENT_TYPE",
"CONTENT_LENGTH",5 x/ G8 O1 k/ M- m
"HTTP_ACCEPT",Delphi Tip,  Delphi Skills, Delphi技巧' s3 _. \9 l, S) F6 y
"HTTP_ACCEPT_CHARSET",) x. _8 O2 p: u: }/ z% ^
"HTTP_ACCEPT_LANGUAGE",Delphi Tips, Delphi Skills, Delphi技巧, Delphi问答, Delphi技术, cjc delphi8 S9 r& y9 E9 @3 x% o
"HTTP_ENCODING",
"HTTP_USER_AGENT",! P- g  g" V$ O- ]. @' B$ x
"HTTP_CONNECTION",CJC Delphi 技巧馆( ?+ q! s9 G; E* ^, P$ a/ H" Q2 {0 |
"HTTP_HOST",
"HTTP_REFERER",
"AUTH_TYPE"
);delphi.xcjc.net0 z0 b; w, E* d) @# V% `

echo '<center>';
echo '<table border="1" cellspacing="0" cellpadding="0">';Delphi Tips, Delphi Skills, Delphi技巧, Delphi问答, Delphi技术, cjc delphi  x+ P6 x5 w# n9 J2 n4 L. `
echo '<caption>CGI Environment Variables</caption>';! [# Q" n+ P6 g0 L- b; q
echo '<tr><th>Name<th>Value</tr>';Delphi Tips, Delphi Skills, Delphi技巧, Delphi问答, Delphi技术, cjc delphi4 @( H8 @! Y! D# r; v$ I

$count = count($array);
for($i=0;$i<$count;$i++)delphi.xcjc.net0 _1 j1 C, T  Z, z2 Z
{
$value = getenv($array[$i]);
if($value): s2 t# E( `* [  _, x. D% b
{% g/ E" G& I5 w) J- o
   echo "<tr><td>$array[$i]<td>" . $value . "</tr>";Delphi Tip,  Delphi Skills, Delphi技巧) i, ?1 U3 F9 H; o5 N! p! X6 B
}
/* 下面的语句也可以哦" u7 G( K+ @6 F) i
if(isset($$array[$i]))Delphi Tip,  Delphi Skills, Delphi技巧" R5 P3 I/ V* V/ c( `" |
{Delphi Tips, Delphi Skills, Delphi技巧, Delphi问答, Delphi技术, cjc delphi/ D. j  S, G& w: W) ~3 k" b
   echo "<tr><td>$array[$i]<td>" . $$array[$i] . "</tr>";
}
*/
}
Delphi Tip,  Delphi Skills, Delphi技巧, g* _1 s, e+ Z- i
echo '</table>';
echo '</center>';  u5 I9 ]1 Y4 {5 ~; I  u
?>

========================================
/ s) A! x7 _2 f) i
$spager=$_SERVER["SERVER_NAME"];
或者! t  R$ q$ ~' D1 [4 |
$spager=getenv('SERVER_NAME');Delphi Tip,  Delphi Skills, Delphi技巧0 e% N, D! B! v4 }$ Q, b. d3 _! R/ _8 E


PHP_SELFDelphi Tips, Delphi Skills, Delphi技巧, Delphi问答, Delphi技术, cjc delphi( x& R# p: E. M4 d4 M
当前正在执行脚本的文件名,与 document root 相关举例来说,在 URL 地址为 http://example.com/test.php/foo.bar 的脚本中使用 $_SERVER['PHP_SELF'] 将会得到 /test.php/foo.bar 这个结果__FILE__ 常量包含当前(例如包含)文件的绝对路径和文件名

如果 PHP 以命令行方式运行,该变量在 PHP 4.3.0 之前无效
delphi.xcjc.net3 q2 y# Z6 `; S" d# R
argv
传递给该脚本的参数当脚本运行在命令行方式时,argv 变量传递给程序 C 语言样式的命令行参数当调用 GET 方法时,该变量包含请求的数据

argc, x5 ~* c. \- {. K7 |
包含传递给程序的命令行参数的个数(如果运行在命令行模式)Delphi Tip,  Delphi Skills, Delphi技巧3 L( k1 _/ {5 m$ x# A2 w
delphi.xcjc.net- {. X5 m8 _0 w, T/ y
GATEWAY_INTERFACEDelphi Tip,  Delphi Skills, Delphi技巧1 E7 g' }5 V+ i7 ?: H! T& E
服务器使用的 CGI 规范的版本例如,CGI/1.1

SERVER_NAME
当前运行脚本所在服务器主机的名称如果该脚本运行在一个虚拟主机上,该名称是由那个虚拟主机所设置的值决定$ a* `" s: \* |$ ]- q8 y" }$ X; _

SERVER_SOFTWARE" r" L" D% b! {) ?
服务器标识的字串,在响应请求时的头信息中给出CJC Delphi 技巧馆% w7 k+ [( v/ K5 a2 |4 D9 j
delphi.xcjc.net* j: j" ?/ Y( g* K# g
SERVER_PROTOCOLCJC Delphi 技巧馆$ {2 i% Z6 \& D: @9 v# ~
请求页面时通信协议的名称和版本例如,HTTP/1.0Delphi Tips, Delphi Skills, Delphi技巧, Delphi问答, Delphi技术, cjc delphi' ~" D" M, j5 }% z# t
Delphi Tip,  Delphi Skills, Delphi技巧, w/ ^" Y8 Q) Y. ~  {; @% U
REQUEST_METHOD
访问页面时的请求方法例如:GETHEAD,POST,PUTDelphi Tip,  Delphi Skills, Delphi技巧6 q/ Y. [. Q6 p& W- h

注: 如果请求的方式是 HEAD,PHP 脚本将在送出头信息后中止(这意味着在产生任何输出后,不再有输出缓冲)
Delphi Tips, Delphi Skills, Delphi技巧, Delphi问答, Delphi技术, cjc delphi$ d2 {- z' G& B7 c
REQUEST_TIME
请求开始时的时间戳从 PHP 5.1.0 起有效Delphi Tip,  Delphi Skills, Delphi技巧1 Z1 t6 Y6 w3 R

QUERY_STRING
查询(query)的字符串(URL 中第一个问号 ? 之后的内容)CJC Delphi 技巧馆4 d+ e& o, ^) N  a) m
( _' ^, g. Q9 ~  e$ {
DOCUMENT_ROOT
当前运行脚本所在的文档根目录在服务器配置文件中定义Delphi Tip,  Delphi Skills, Delphi技巧9 I/ p; j/ I/ g3 v: U: r9 ^3 W
Delphi Tip,  Delphi Skills, Delphi技巧$ r4 m2 n, p( e5 K
HTTP_ACCEPT
当前请求的 Accept: 头信息的内容delphi.xcjc.net2 m) A4 F3 B# o$ o' o

HTTP_ACCEPT_CHARSETCJC Delphi 技巧馆( S. v$ E" G' }* m8 Z. S
当前请求的 Accept-Charset: 头信息的内容例如:iso-8859-1,*,utf-8Delphi Tips, Delphi Skills, Delphi技巧, Delphi问答, Delphi技术, cjc delphi0 X0 U6 @9 I1 F* W5 y# s2 [

HTTP_ACCEPT_ENCODING
当前请求的 Accept-Encoding: 头信息的内容例如:gzipDelphi Tip,  Delphi Skills, Delphi技巧9 r7 f: N: F1 J2 l' ]/ L

HTTP_ACCEPT_LANGUAGE: d  Y) Q5 W# W& F/ H$ w
当前请求的 Accept-Language: 头信息的内容例如:en

HTTP_CONNECTIONCJC Delphi 技巧馆' c% U2 u5 X' E2 N
当前请求的 Connection: 头信息的内容例如:Keep-AliveDelphi Tip,  Delphi Skills, Delphi技巧+ F3 |/ q! k; m8 ^/ u

HTTP_HOSTdelphi.xcjc.net7 j0 X0 A; r9 w) S8 C6 y7 P& q- h
当前请求的 Host: 头信息的内容
Delphi Tips, Delphi Skills, Delphi技巧, Delphi问答, Delphi技术, cjc delphi  C$ T; G2 t$ C7 [( Q7 X  x
HTTP_REFERER
链接到当前页面的前一页面的 URL 地址不是所有的用户代理(浏览器)都会设置这个变量,而且有的还可以手工修改 HTTP_REFERER因此,这个变量不总是真实正确的

HTTP_USER_AGENT
当前请求的 User-Agent: 头信息的内容该字符串表明了访问该页面的用户代理的信息一个典型的例子是:Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586)也可以使用 get_browser() 得到此信息CJC Delphi 技巧馆9 q! h2 Z, W+ W7 `$ D& O' ^) ]( m
CJC Delphi 技巧馆7 \6 ^, Q8 m  @6 y& ]3 m) u- M
HTTPSDelphi Tips, Delphi Skills, Delphi技巧, Delphi问答, Delphi技术, cjc delphi+ |! O( a0 Y3 T$ d5 A' d: q: K
如果脚本是通过 HTTPS 协议被访问,则被设为一个非空的值3 {  B$ Y4 l- L; |% |0 N6 R0 ?# f
CJC Delphi 技巧馆" Q8 h" H5 |/ n( @3 I, Y. a% i
REMOTE_ADDRDelphi Tips, Delphi Skills, Delphi技巧, Delphi问答, Delphi技术, cjc delphi+ v8 J' F! d' A
正在浏览当前页面用户的 IP 地址6 k4 a* M. {$ Z
/ G* [7 Q3 K% H1 N
REMOTE_HOST& q  ?6 `% ?# k# Y' A
正在浏览当前页面用户的主机名反向域名解析基于该用户的 REMOTE_ADDR# |, k) _4 w  u+ [6 f; ^2 X. Z9 ?  _* Y

注: 必须配置 Web 服务器来建立此变量例如 Apache 需要在 httpd.conf 中有 HostnameLookups On参见 gethostbyaddr()
delphi.xcjc.net* G  c+ O" S- s/ _
REMOTE_PORT
用户连接到服务器时所使用的端口
原创粉丝点击