今天对一台WIN2003系统的服务器的php环境进行升级,因为PHP5.5已不支持win2003,Win2003目前最高能安装PHP5.4.35(后期备注已升级到最高版本php.5.4.45稳定版),在以前PHP 5.2.X中,只需要使用php5isapi.dll的方式就可以,但在PHP 5.3以后却不再支持ISAPI模式了,也没有此文件。所以本文介绍使用FastCgi在IIS6来配置PHP 5.4运行环境。
一、安装好IIS
因为系统已安装,在此不再说明!
二、下载并安装IIS FastCGI
下载地址:http://www.iis.net/download/fastcgi。有支持IIS6和IIS5.1的32位版本和64位版本,还有支持IIS7的,因为IIS7与IIS6差别比较大,所以对于IIS7以后再介绍吧。32位选择 x86或者download x86,下载下来名称为fcgisetup_1.5_x86_rtw.msi。安装后会在C:\WINDOWS\system32\inetsrv\目录下多出了5个文件fcgiconfig.js,fcgiext.dll,fcgiext.ini,fcgilicense.rtf,fcgireadme.htm
这个时候在IIS6的"WEB服务扩展"里就多出了一个FastCGI Handler 如下图:
安装FastCgi没什么可介绍的,但是有一点要注意,就是系统要先安装VC9运行库以及2.0版本以上的.net Framework 才能正常运行,否则会报“FastCGI Error 14001 (0x800736b1)”之类的错误。若出现如同下面的错误,说明你的电脑没有安装VC9运行库 即VISUAL C++ 2008
FastCGI Error The FastCGI Handler was unable to process the request. ------------------------------------------------------- Error Details: Error Number: 14001 (0x800736b1). Error Description: ???????????????????????????? HTTP Error 500 - Server Error. Internet Information Services (IIS)
所以要先安装VC9运行库(即VISUAL C++ 2008)
Microsoft Visual C++ 2008 SP1
32位系统适用:vcredist_x86.exe
64位系统适用:vcredist_x64.exe
注意:没有安装Vc2008库是无法安装VC9 x86 的PHP脚本环境的。
Microsoft Visual C++ 2008 Redistributable Package (x86)下载地址:
http://download.microsoft.com/download/5/9/e/59e74271-2b59-49a1-b955-96b69cc34f38/vcredist_x86.exe
Microsoft Visual C++ 2008 Redistributable Package (x64)下载地址:
http://download.microsoft.com/download/b/d/e/bde0381b-20e2-4631-a5f4-aa72111a23d8/vcredist_x64.exe
另外64位系统也要安装Vc2008库 X86版本,因为PHP要在32位下运行,否则PHP也无法运行 报:"Error Number: -2147467259 (0x80004005)."错误, 在php目录直接运行php-cgi.exe也无法打开报错(报:"由于应用程序配置不正确,应用程序未能启动"),之前好多台2003都安装正常 就有一台不成 后来一查发现是这个原因
三、下载安装IIS下的PHP5.4.35
下载地址http://windows.php.net/download/,下载VC9 x86 Non Thread Safe(Thread Safe 适合PHP ISAPI 执行方式 Non Thread Safe 适合PHP FastCGI执行方式)的ZIP版本,解压到所需目录如c:\php,该目录需要给予user读取运行权限。
拷贝php的扩展文件
将“c:\php”下的所有.dll文件,复制到“C:WINDOWS\system32”下,如果有提示需要覆盖文件,建议覆盖。
四、配置和修改内容
1、环境变量修改
我的电脑->属性->高级->环境变量->系统变量,在Path的最后面中加上;c:\php\
2、FastCGI安装目录内的修改(注册PHP到FastCGI)
打开C:\WINDOWS\system32\inetsrv\fcgiext.ini文件,在文件最后加上下面的语句:
[Types](这个是文件原来就有的,在[Types]后面加上下面的语句就可以,要全部哦不然会报错的。)
php=PHP
[PHP]
ExePath=c:\PHP\php-cgi.exe
InstanceMaxRequests=10000
EnvironmentVars=PHP_FCGI_MAX_REQUESTS:10000
ActivityTimeout=3600
RequestTimeout=3600
注:fcgiext.ini直接打开空白的话,先复制到别的地方修改后再复制回去。
3、PHP.ini的修改,PHP安装目录下是没有PHP.ini这个文件的,只有php.ini-development和php.ini-production,我们把php.ini-development改为php.ini(当然如果你怕有错可以先备份一下)。
注明:首先建一个文件夹命名为TMP,位置随意,我这里放在c:\PHP\tmp。 (upload_tmp_dir会用到,upload_tmp_dir是用来定义上传文件存放的临时路径,这里可以修改并给它定义一个绝对路径,同时需要有读、写权限)。用搜索(快捷键:Ctrl+F)的方式把下面的关键字改成现在的值:
short_open_tag = Off (去掉前面的“;”,并把Off改为On。)
把;upload_tmp_dir =改为upload_tmp_dir="c:\PHP\tmp"
把;cgi.force_redirect = 1改为cgi.force_redirect=0
把;fastcgi.impersonate = 1;改为 fastcgi.impersonate=1;
把; extension_dir = "ext"改为extension_dir="c:\PHP\ext"
把;date.timezone =改为date.timezone =PRC(如果不修改date.timezone,打开网页的时候蛮有可能提示500错误。也有人把值改为Asia/Shanghai,我没试过你们可以试试。)
在Windows Extensions中去除扩展前面的分号(;):
; extension=php_curl.dll
; extension=php_gd2.dll
; extension=php_ldap.dll
; extension=php_mbstring.dll
; extension=php_exif.dll
; extension=php_mysql.dll
; extension=php_mysqli.dll
; extension=php_sockets.dll
; extension=php_xmlrpc.dll
服务器优化php.ini内存
内存 2048 memory_limit = 512M
PHP的致命错误:最大执行时间180秒 max_execution_time = 180
将刚刚的php.ini文件,复制一份到“C:\WINDOWS”目录下,并把php程序目录下的php.ini修改为“#php.ini”或删除,防止php在调用时冲突。
4.Internet信息服务(IIS)管理器的修改
(1)网站》属性》主目录》配置》添加
可执行文件填写C:\WINDOWS\system32\inetsrv\fcgiext.dll
扩展名填写 .php
动作->限制为 GET,HEAD,POST
(2)网站->属性->文档->添加默认内容index.php。这里全部配置好了,一定要把IIS服务重启一下。
5、测试
用文本写一段测试代码:
<?php
phpinfo();
?>
保存为index.php,名字随便取,只要后缀是.php就可以。把index.php放到根目录下,我这里是C:\Inetpub\wwwroot,然后在浏览器中输入http://localhost/index.php就可以得到返回的信息了。