php 服务器变量$_SERVER 服务器环境变量 $_ENV

php 服务器变量$_SERVER 服务器环境变量 $_ENV,第1张

PHP  $_SERVER 变量

$_SERVER 是一个包含诸如头信息(header)、路径(path)和脚本位置(script locations)的数组。它是 PHP 中一个超级全局变量,我们可以在 PHP 程序的任何地方直接访问它。

$_SERVER 包含着众多的信息,你可以尝试直接打印它:

print_r($_SERVER)

$_SERVER 数组元素

更多情况下,我们只需要 $_SERVER 数组中的某些元素(数组单元)。$_SERVER 数组包含的元素如下:

页面程序相关

$_SERVER[‘PHP_SELF’]:相对于网站根目录的路径及 PHP 程序名称,与 document root 相关。

$_SERVER[‘HTTP_REFERER’]:链接到当前页面的前一页面的 URL 地址。

$_SERVER[‘SCRIPT_NAME’]:相对于网站根目录的路径及 PHP 程序文件名称 。

$_SERVER[‘REQUEST_URI’]:访问此页面所需的 URI 。

$_SERVER[‘SCRIPT_FILENAME’]:当前运行 PHP 程序的绝对路径及文件名。

$_SERVER[‘PATH_TRANSLATED’]:当前 PHP 程序所在文件系统(不是文档根目录)的基本路径。

$_SERVER[‘QUERY_STRING’]:查询(query)的字符串(URL 中第一个问号 ? 之后的内容但不包括 # 后面的内容)。

$_SERVER[‘argv’]:传递给当前 PHP 程序的参数。

$_SERVER[‘argc’]:命令行模式下,包含传递给程序的命令行参数的个数。

$_SERVER[‘REQUEST_TIME’]:请求开始时的时间戳,从 PHP 5.1.0 起有效。

$_SERVER[‘REQUEST_METHOD’]:访问页面时的请求方法,例如:“GET”、“HEAD”,“POST”或“PUT”。

$_SERVER[‘HTTP_ACCEPT’]:当前请求的 Accept: 头信息的内容。

$_SERVER[‘HTTP_ACCEPT_CHARSET’]:当前请求的 Accept-Charset: 头信息的内容。例如:“iso-8859-1,*,utf-8”。

$_SERVER[‘HTTP_ACCEPT_ENCODING’]:当前请求的 Accept-Encoding: 头信息的内容。例如:“gzip”。

$_SERVER[‘HTTP_ACCEPT_LANGUAGE’]:当前请求的 Accept-Language: 头信息的内容。例如:“zh-cn”。

$_SERVER[‘HTTP_CONNECTION’]:当前请求的 Connection: 头信息的内容。例如:“Keep-Alive”。

$_SERVER[‘HTTP_HOST’]:当前请求的 Host: 头信息的内容。

$_SERVER[‘HTTPS’]:如果 PHP 程序是通过 HTTPS 协议被访问,则被设为一个非空的值。

$_SERVER[‘PHP_AUTH_DIGEST’]:当作为 Apache 模块运行时,进行 HTTP Digest 认证的过程中,此变量被设置成客户端发送的“Authorization”HTTP 头内容(以便作进一步的认证操作)。

$_SERVER[‘PHP_AUTH_USER’]:当 PHP 运行在 Apache 或 IIS(PHP 5 是 ISAPI)模块方式下,并且正在使用 HTTP 认证功能,这个变量便是用户输入的用户名。

$_SERVER[‘PHP_AUTH_PW’]:当 PHP 运行在 Apache 或 IIS(PHP 5 是 ISAPI)模块方式下,并且正在使用 HTTP 认证功能,这个变量便是用户输入的密码。

$_SERVER[‘AUTH_TYPE’]:当 PHP 运行在 Apache 模块方式下,并且正在使用 HTTP 认证功能,这个变量便是认证的类型。

服务器端相关

$_SERVER[‘DOCUMENT_ROOT’]:当前运行 PHP 程序所在的文档根目录,在服务器配置文件中定义。

$_SERVER[‘GATEWAY_INTERFACE’]:服务器使用的 CGI 规范的版本,例如:“CGI/1.1”。

$_SERVER[‘SERVER_ADDR’]:当前运行 PHP 程序所在的服务器的 IP 地址。

$_SERVER[‘SERVER_NAME’]:当前运行 PHP 程序所在的服务器的名称。

$_SERVER[‘SERVER_ADMIN’]:Apache 服务器配置文件中的 SERVER_ADMIN 参数。

$_SERVER[‘SERVER_PORT’]:服务器所使用的端口。如果使用 SSL 安全连接,则这个值为用户设置的 HTTP 端口。

$_SERVER[‘SERVER_SIGNATURE’]:包含服务器版本和虚拟主机名的字符串。

$_SERVER[‘SERVER_SOFTWARE’]:服务器标识的字串,在响应请求时的头信息中给出。

$_SERVER[‘SERVER_PROTOCOL’]:请求页面时通信协议的名称和版本,例如:“HTTP/1.0”。

其他杂项

$_SERVER[‘HTTP_USER_AGENT’]:当前请求的 User-Agent: 头信息的内容,该字符串表明了访问该页面的用户代理的信息。

$_SERVER[‘REMOTE_ADDR’]:正在浏览当前页面用户的 IP 地址。

$_SERVER[‘REMOTE_HOST’]:正在浏览当前页面用户的主机名。

$_SERVER[‘REMOTE_PORT’]:用户连接到服务器时所使用的端口。

注意,如果以命令行方式运行 PHP,上面列出的元素几乎没有有效的(或是没有任何实际意义的)。

PHP $_ENV 变量

$_ENV 是一个包含服务器端环境变量的数组。它是 PHP 中一个超级全局变量,我们可以在 PHP 程序的任何地方直接访问它。

$_ENV 只是被动的接受服务器端的环境变量并把它们转换为数组元素,你可以尝试直接打印它:

print_r($_ENV)

限于篇幅,在此不再列出打印的结果,且不同的服务器上,打印出的结果可能是完全不同的。

$_ENV 数组元素

$_ENV 数组中的元素(数组单元)随服务器环境不同而有较大差异,所以无法像 $_SERVER 那样列出完整的列表。以下是 $_ENV 数组包含的比较通用的元素:

$_SERVER[‘PATH’]:环境变量 PATH 路径。

$_SERVER[‘CLASSPATH’]:系统 CLASSPATH 路径。

$_SERVER[‘LIB’]:系统 LIB 库路径。

$_SERVER[‘INCLUDE’]:系统 Include 路径,注意与 PHP 的包含路径是不一样的。

$_SERVER[‘OS’]:操作系统类型。

$_SERVER[‘LANG’]:系统语言,如 en_US 或 zh_CN。

$_SERVER[‘PWD’]:当前工作目录。

$_SERVER[‘TEMP’]:系统 TEMP 路径。

$_SERVER[‘AP_PARENT_PID’]:当前进程 ID 号。

$_SERVER[‘NUMBER_OF_PROCESSORS’]:系统 CPU 数目。

$_ENV 为空的原因及解决办法

如果打印输出 $_ENV 为空,可以检查一下 php.ini 的配置:

variables_order = "EGPCS"

上述配置表示 PHP 接受的外部变量来源及顺序,EGPCS 是 Environment、Get、Post、Cookies 和 Server 的缩写。如果 variables_order 的配置中缺少 E ,则 PHP 无法接受环境变量,那么 $_ENV 也就为空了。

简单说环境变量就是无论在什么地址或者路径下要需要某变量,系统都会按照环境变量设定的值或者路径需去找相对应的数据。比如你在环境变量中设定A=C:\ 那么当你不管在哪准备启用A变量的时候,系统自动去C:\下寻找。

我们知道W/B的传输协议是http,http的报头会有一些客户端的信息,如

客户IP地址、浏览器的语言系统等。

大概意思是这样 通俗点讲能理解吗?

启动Jenkins

1、 安装jdk

从略,建议1.6或以上版本,配置好环境变量。

2、 安装tomcat

从略,安装完调试下tomcat是否正常。

3、 安装ant

下载zip包,解压后配置好环境变量。

4、 安装jenkins

下载war包,命名为Jenkins,拷贝到tomcat/webapps目录下。

5、 安装Android SDK

下载安装,完成后配置好Android_SDK_HOME环境变量。此步骤主要用于进行android自动化测试,若不进行此项可略过。

安装完成后启动tomcat/bin/startup.bat文件(linux下是startup.sh),在浏览器输入http://localhost:8080/jenkins,8080为tomcat端口,即可访问jenkins服务器。

配置Jenkins

1、 JDK配置

新增JDK,指定JDK名字和JAVA_HOME

2、 ANT配置

新增ANT,指定ANT名字和ANT_HOME

3、 Maven配置

从略,本文未使用到Maven,具体配置方法参考Google。

4、 Subversion

选择1.6版本SVN,勾选Update default Subversion credentials cache after successful authentication

5、 邮件通知

填写SMTP server、Default user E-mail suffix、System Admin E-mail Address、Jenkins URL、勾选Use SMTP Authentication,填写User Name、Password、Use SSL、SMTP port、Chareset(UTF-8) 、Default Content Type(默认)、Default Recipients(默认收件人),配置完成后可进行测试邮件。

6、 Jenkins URL

配置该URL,用于别人访问。

插件管理

1、 Hudson Subversion Plug-in,jenkins的svn插件。

2、 Android Emulator Plugin,android模拟器插件。

3、 JUnit Attachments Plugin,junit测试报告附件插件。

4、 Email-ext plugin,邮件扩展插件。此处说明下,默认Jenkins只会发送构建失败的邮件,我们需安装此插件才能自定义不同场景。

5、 Deploy to container Plugin远程发布插件。

自动化测试

打包源工程

Android程序

本小节讲诉如何打包一个Android工程,当前使用的是ant进行编译源码。

1、 首先构建一个自由风格的Job。

2、 添加源码路径,选择所使用的版本控制器,输入源码路径。

3、 构建触发器可根据需要选择是否定时构建。

4、 构建环境,此处Jenkins安装了Android Emulator Plugin插件,可以启动已有模拟器或添加新的模拟器,本文案例中使用真机调试。

5、 构建,卸载手机中原程序 adb –s uninstall com.XXXXXX

6、 生成bulid.xml文件,-p后面跟工程所在的本地jenkins下路径

android update project -n *** c:\被测工程Job路径\workspace

7、 Ant进行编译程序,并安装到当前手机中

ant debug install -f c:\被测工程Job路径\workspace\build.xml

8、 构建后操作,本案例中构建完成后自动启动构建下一个测试Job

Bulid other projects,选择测试工程的Job.

打包测试工程

Android程序

本小节讲诉如何构建一个Android测试工程,包括邮件发送和测试报告展示。

1、 构建步骤1-7和Android程序章节一样,从略。

2、 本文案例中测试程序是通过命令行启动运行的,所以在此处增加一个批处理运行。P.S. adb shell am instrument -w -e class com.megafon.test.MegafonTest#testDeleteContact com.megafon.test/android.test.InstrumentationTestRunner ,此处是通过批处理来单独运行一个个的测试用例。避免了Junit3的无序执行的问题。

3、 删除Workspace中原来存在的测试报告文件,一般不删除也会覆盖。

如何让测试程序生成xml格式的测试报告,其他文章会重点介绍。

4、 从手机中拷贝测试报告,最终测试是在手机上运行,所以报告也生成在手机中,使用adb pull命令把测试报告全部拷贝到workspace下制定目录。

5、 构建后操作,发布测试报告,如果报告中包含附件,此处使用到JUnit Attachments Plugin插件。

6、 邮件通知,此处使用到Email-ext plugin插件,前面的默认,直接使用我们在系统管理里面设置的默认值。

7、 点击右下角高级按钮,可选择不同场景下发送邮件。

8、 测试结果展示,在本次构建的控制台可以显示当前所有的构建日志。

9、测试报告点击Test Result可以显示所有测试记录。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/187293.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-30
下一篇2023-03-30

发表评论

登录后才能评论

评论列表(0条)

    保存