Write the Code. Change the World.

7月 01

下载

目前,php7的稳定的版本是7.1.6。根据系统的不同,所下载的文件有所不同。给php提供了两种版本的:线程安全和非线程安全的。

  • TS :Thread Safe 线程安全,执行时会进行线程(Thread)安全检查,以防止有新要求就启动新线程的CGI执行方式而耗尽系统资源。

  • NTS:Non Thread Safe 非线程安全, 在执行时不进行线程(Thread)安全检查

而选择线程安全还是非线程安全的php,通常由php的执行方式决定的。php有两种执行方式,ISAPIFastCGI

– CGI(通用网关接口/Common Gateway Interface)一般是可执行程序,例如EXE文件,和WEB服务器各自占据着不同的进程,而且一般一个CGI程序只能处理一个用户请求。这样,当用户请求数量非常多时,会大量占用系统的资源,如内存、CPU时间等,造成效能低下。

  • ISAPI(Internet Server Application Program Interface)是微软提供的一套面向WEB服务的API接口,它能实现CGI提供的全部功能,并在此基础上进行了扩展,如提供了过滤器应用程序接口。ISAPI应用大多数以DLL动态库的形式使用,可以在被用户请求后执行,在处理完一个用户请求后不会马上消失,而是继续驻留在内存中等待处理别的 用户输入。此外,ISAPI的DLL应用程序和WEB服务器处于同一个进程中,效率要显著高于CGI。所以如果是以ISAPI来执行PHP,选择 Thread Safe 版本

  • FastCGI是可伸缩架构的CGI开放扩展,其主要行为是将CGI解释器进程保持在内存中并因此获得较高的性能。传统的CGI解释器的反复加载是CGI性能低下的主要原因,如果CGI解释器保持在内存中并接受FastCGI进程管理器调度,则可以提供良好的性能、伸缩性等。nginx下php是以FastCGI的方式运行,所以我们下载 Non Thread Safe 版本。

下载地址:http://windows.php.net/download

我的电脑是 win7,64位 ,服务器装的是 nginx 。那么,我就下64位的非线程安全的版本。

下载好后,解压,复制到对应目录下。我这里,放的目录是D:\service\wnmp\php

使用

进入到目录下,执行 php -v ,先看看版本号。

d:

cd

cd service/wnmp/php

php -v

如果,出现下边的报错。说明没有安装VC14运行时环境,需要去下载安装。

image

下载安装VC14运行环境:
https://www.microsoft.com/zh-CN/download/details.aspx?id=48145

下载,安装成功后。再执行 php -v,就可以看到php版本信息的正确显示了。

配置

配置php.ini文件,php提供了两个模板,php.ini-developmentphp.ini-production,前者适合开发程式使用(测试用),后者拥有较高的安全性设定,则适合上线当产品使用。这里我们将php.ini-development文件改为php.ini做配置文件使用。

修改扩展dll文件目录:

//这里根据自己的实际情况而定
extension_dir = "D:\service\wnmp\php\ext"

加入扩展:

选择需要运行哪些扩展,只需将extension前面的注释去掉,例如:

extension=php_mysql.dll #php7不再有
extension=php_mysqli.dll
extension=php_curl.dll
extension=php_gd2.dll
extension=php_pdo_mysql.dll
extension=php_xmlrpc.dll
extension=php_mbstring.dll

CGI 设置

enable_dl = On #允许用户在运行时加载PHP扩展,即在脚本运行期间加载
cgi.force_redirect = 0 #启用时, 防止任何人通过如 http://my.host/cgi-bin/php/secretdir/script.php 这样的 URL 直接调用 PHP。PHP 在此模式下只会解析已经通过了 web 服务器的重定向规则的 URL. 在大多数 web 服务器中以 CGI 方式运行 PHP 时很有必要用 cgi.force_redirect 提供安全。PHP 默认其为 On。可以将其关闭,但风险自担。注: Windows 用户:可以安全地在 IIS 之下将其关闭,事实上必须这么做。要在 OmniHTTPD 或 Xitami 之下使用也必须将其关闭。 
cgi.fix_pathinfo=1 #1:PHP CGI 以 / 为分隔符号从后向前依次检查请求的路径, 对 CGI 提供了真正的 PATH_INFO/PATH_TRANSLATED 支持。以前 PHP 的行为是将 PATH_TRANSLATED 设为 SCRIPT_FILENAME,而不管 PATH_INFO 是什么。有关 PATH_INFO 的更多信息见 cgi 规格。将此值设为 1 将使 PHP CGI 修正其路径以遵守规格。设为 0 将使 PHP 的行为和从前一样。默认为零。用户应该修正其脚本使用 SCRIPT_FILENAME 而不是 PATH_TRANSLATED。 

#IIS(在基于 WINNT 的操作系统上)中的 FastCGI 支持模仿客户端安全令牌的能力。这使得 IIS 能够定义运行时所基于的请求的安全上下文。Apache 中的 mod_fastcgi 不支持此特性(03/17/2002)。如果在 IIS 中运行则设为 1。默认为 0。 

fastcgi.impersonate = 1 
fastcgi.impersonate = 1
cgi.rfc2616_headers = 1 #指定 PHP 在发送 HTTP 响应代码时使用何种报头。如果设定为 0,PHP 发送一个 Status: 报头,Apache 和其它 web server 都支持。如果此选项设定为 1,PHP 将发送 RFC 2616 兼容的报头。除非你知道自己在做什么,否则保留其值为 0。 

启动命令是:

d:

cd service/wnmp/php/

php-cgi.exe -b 127.0.0.1:9000 -c php.ini

RunHiddenConsole

当启动命令后,命令窗口不能关闭,要一直开着。所以还是得弄个 RunHiddenConsole 工具。

下载:http://download.csdn.net/detail/johnnycode/8045177

配置,请参考:http://blog.csdn.net/johnnycode/article/details/40148171

环境变量配置

运行 里边操作:

sysdm.cpl

依次操作 系统属性 -> 高级 -> 环境变量 -> 系统变量 -> Path ,编辑,然后追加:

D:/service/wnmp/php/;D:/service/wnmp/php/ext/;

确定后,从新打开终端。输入php -v,就可以马上看到效果了。

参考

http://www.cnblogs.com/Li-Cheng/p/4399149.html

http://www.codesec.net/view/214982.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注