这里用的服务器操作系统是x86版本的,所以以下程序均为在Windows x86环境下使用的版本。
首先我们要下载两个工具,FastCGI和php
1,FastCGI
fcgisetup32.msi(FastCGI Extension for IIS 6.0 x86)
下载:http://www.iis.net/extensions/FastCGI,选择: x86
2,PHP 推荐PHP 5.2.17的ZIP压缩包版本
http://windows.php.net/downloads/releases/php-5.2.17-nts-Win32-VC6-x86.zip
文件下载完成后,对文件进行一次病毒扫描,以防意外,毕竟小心使得万年船,服务器不是别的,如果中毒那损失可就大了。
不建议将php装在C盘,因为我是用的虚拟机做测试,所以我将PHP装在了c盘,如果你的安装路径不同,请自行修改以下提及到的对应路径。
第二步、安装PHP
一、安装 FastCGI For IIS6
将下载得到的fcgisetup32.msi,双击运行进行安装。
安装后在 C:\Windows\System32\inetsrv 目录下产生了五个文件。
同时在 IIS 的 “Web 服务扩展”里多了 FastCGI Handler。
二、安装PHP
PHP 5.3 起官方更推荐 FastCGI,IIS6 下 ISAPI 已不再推荐使用。实测 5.2 也可以通过 FastCGI 方式运行,稳定性更好。下载 Windows 版本 PHP,解压到所需目录,并授予运行账户读取与执行权限。
下载 .zip 格式的版本,解压缩下载的 php-5.2.17-nts-Win32-VC6-x86.zip,并将其复制到C:\PHP目录(你可以根据自己的意愿解压到别的目录。),并给 IIS 启动帐户组或用户赋予读取和运行权限。
C:\PHP目录下的所有dll文件复制到C:\Windows\System32下(Windows2000系统为C:\WINNT\System32,下同),如果已经有若干同名文件存在,覆盖即可。
注册 PHP 到 FastCGI
打开 C:\Windows\System32\inetsrv\fcgiext.ini 文件。
; This is the configuration file for the FastCGI handler for IIS 6.0.
; The FastCGI handler will look for this file in the same directory as
; fcgiext.dll. By default, the FastCGI installer will place this file into
; the %windir%system32inetsrv directory.
我个人的理解是,只要“Web 服务扩展”里的 FastCGI Handler 为允许时,在加载 fcgiext.dll 时,会读取 fcgiext.ini 配置文件的内容,根据里面的配置为每个网站提供映射。
在 [Types] 下添加以下配置:
[Types]
php=PHP
[PHP]
ExePath=C:\PHP\php-cgi.exe
这里要用:“”不能用“/”,“php”表示扩展名,“PHP”是配置节名称,以“[PHP]”定义。 (选你自己的安装的目录,下同。)
C:\PHP目录下的php.ini-development复制一份,更名为php.ini(还是在当前目录中),再用文本编辑软件打开这个php.ini(建议使用Notepad2、EditPlus、UltraEdit等各种支持语法高亮显示的文本编辑软件)。
查找:extension_dir = “./”
将其路径指向你的 PHP 目录下的扩展功能目录中,这里PHP5对应修改为extension_dir = “c:/PHP/ext” 。
再在d盘下建立文件夹,并命名为upload_tmp
查找 ;upload_tmp_dir =
将;upload_tmp_dir =该行的注释符,即前面的分号”;”去掉,使该行在php.ini文档中起作用。
upload_tmp_dir是用来定义上传文件存放的临时路径,在这里你还可以修改并给其定义一个指定路径,需要注意的是,这里设置的目录必须有读、写权限。
这里我设置为upload_tmp_dir = “d:/upload_tmp/” (这里就是我前面建立的文件夹)
找到:fastcgi.impersonate = 1;把前面的;去掉,
fastcgi.impersonate = 1
找到:short_open_tag= Off;
short_open_tag= On
搜索 ; Windows Extensions,定位到php.ini文件的extension,将下面列出的常用扩展前面的分号注释符去掉:
; 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
特别提示:Exif扩展是用来显示图片的exif信息的,因该扩展需要mbstring支持,所以将extension=php_exif.dll这一行移动到extension=php_mbstring.dll一行的下面。
注意最后一个php_zip.dll这个在我下载下来的php5.3.0的ext内是不存在的,所以如果开启会报错误,如果实在需要这个DLL,可以从 PHP5.2中拷贝过去(php5.2.X可以,php5.3.0不行)extension=php_ming.dllphp5.3.0的ext内是也不存在
;date.timezone =
去掉前面的分号注释符,这里将其设置为 date.timezone = Asia/Shanghai
找到下面
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
; date.timezone =
更改为并去除前面的“;”:
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = Asia/Shanghai
如果不改以上的date.timezone可能打开网页会提示500错误
关于时区设定的说明:
从php5.1.0开始,php.ini里加入了date.timezone这个选项,默认情况下是关闭的,也就是显示的时间(无论用什么php命令)都是格林威治标准时间,和我们的时间(北京时间)差了正好8个小时,有以下2种方法可以恢复正常的时间。
- 如果要用5.1以上版本,而且不修改php.ini,则需要在关于时间的初始化的语句的上面加上date_default_timezone_set (XXX),或者使用date(‘Y-m-d G:i:T’, strtotime(‘+8HOUR’) )来获取日期时间;
- 一劳永逸,仅限能修改php.ini。打开php.ini把date.timezone前面的分号去掉,在=后面加XXX,重启http服务(如apache2或iis等)即可。
关于XXX,大陆内地可用的值是:Asia/Chongqing、Asia/Shanghai、Asia/Urumqi(依次为重庆,上海,乌鲁木齐),港台地区可用:Asia/Macao、Asia/Hong_Kong、Asia/Taipei(依次为澳门,香港,台北),还有新加坡:Asia /Singapore,以上没有北京,不过接着往下看,其他可用的值是:Etc/GMT-8,Singapore ,Hongkong,PRC(中华人民共和国)。
查找:;session.save_path = “/tmp”
将前面的分号注释符去掉,这里将其设置为session.save_path = “D:/upload_tmp” (这里就是我前面建立的文件夹)
如果你有遇到无法上传较大文件或者运行某些程序经常超时,那么可以修改以下内容来调整相关限额:
max_execution_time = 30 ; 这个是每个脚本运行的最长时间,根据你的需求更改数值,单位秒
max_input_time = 60 ; 这是每个脚本可以消耗的时间,根据你的需求更改数值,单位也是秒
memory_limit = 128M ; 这个是脚本运行最大消耗的内存,根据你的需求更改数值,256M。
post_max_size =10M
表单提交最大数据为10M.此项不是限制上传单个文件的大小,而是针对整个表单的提交数据进行限制的.
限制范围包括表单提交的所有内容.例如:发表贴子时,贴子标题,内容,附件等…根据你的需求更改数值,M是单位:兆。
大约第883行,
upload_max_filesize = 2M ;
上载文件的最大许可大小 ,根据你的需求更改数值,M是单位:兆。
在论坛发表贴子时,您post_max_size 设为10M,而此项设成了2M,那么您只能上传最大为2M的附件,且可以同时上传5个.
配置网站
打开IIS管理器,网站上点右键-属性-主目录-配置-添加,
可执行文件路径:C:\Windows\System32\inetsrv\fcgiext.dll
先运行C:\PHP\php-cgi.exe如果能进入命令窗口并只有光标,说明FastCGI能正常调用php-cgi,否则会提示错误,这点对使用微软的fastcgi模式很重要。
写个 php 测试下吧
修改完在IIS上或者命令提示符运行iisreset命令重启IIS服务,这步很重要!
测试是否安装成功!
建立一个网站,phpinfo.php文件内容为:
文件:phpinfo.php(内容如下)
然后访问这个文件,如果看到php详细信息页面,就说明你的服务器可以跑 php 了。
附:MySQL、Zend Optimizer安装
安装MySQL
下载Windows Essentials (x86) ,直接双击安装即可。这里本人安装到C:\MySQL,安装过程中会提示你是不是立即进行配置,选择否即可完成安装。安装完毕后,在“开始”菜单的“运行”中输入:C:\MySQL\bin\mysqld-nt -install ,运行成功之后再输入:net mysql start ,将会启动 MySQL 服务;如果你还想较详细的配置 MySQL ,就请进入 C:\MySQL\bin 目录,运行 MySQLInstanceConfig.exe ,按提示操作即可。
如果你下载的是 Windows (x86) ,解压后双击执行 Setup.exe 即可,步骤同上。
如果你下载的是 Without installer (unzip in C:) ,直接解压到C:\MySQL,在“开始”菜单的“运行”中输入: C:\MySQL\bin\mysqld-nt.exe ,运行成功之后再输入:net mysql start ,即可启动 MySQL 服务。
为MYSQL设置密码,确保安全:
一般菜单里面有配置向导MySQL Server Instance Config Wizard,运行后按下面步骤配置设置ROOT密码即可
ROOT 密码建议设置复杂并妥善保管。
也可以在MySQL Command Line Client里面用命令配置:
首先在打开DOS窗口,然后进入目录 mysqlbin,再键入命令mysql -uroot -p,回车后提示你输密码,如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是:mysql>
修改密码。
格式:mysqladmin -u用户名 -p旧密码 password 新密码
例:给root加个密码guang.cc首先在DOS下进入目录mysqlbin,然后键入以下命令
mysqladmin -uroot -password <NEW_PASSWORD>
注:因为开始时root没有密码,所以-p旧密码一项就可以省略了。
然后执行:
SET PASSWORD FOR ‘root’@‘localhost’ = OLD_PASSWORD(‘<NEW_PASSWORD>’);
这里的命令是由于MySQL 4.1 及其后版本验证协议使用的密码哈希算法与老的客户端不兼容,在PHPMYADMIN里用正确密码登陆也会提示:
Client does not support authentication protocol requested
by server; consider upgrading MySQL client
所以是为后面正确使用PHPMYADMIN做准备
这样 ROOT 密码就设置为 <NEW_PASSWORD> 了
安装Zend Optimizer优化PHP程序
Zend Optimizer是由PHP核心引擎“Zend”创建者Zend技术公司所开的免费PHP优化软件。据Zend公司透露使用这个软件某些情况下至少可以提高性能30%以上!现在我们来看看如何配置这套软件。
Zend Optimizer的安装很简单,
- 运行安装文件,首先提示你选择安装目录,选择一个你喜欢的目录,单击“Next”。
- 安装向导会要求你选择当前使用的WEB服务器(Apache、IIS或其它),选择好服务器后单击“Next”
- 安装向导提示您确认php.ini的位置(默认是C:\Windows)单击“Next”,提示“备份php.ini到C:\Windows\php.ini-Optimizer-bak,当卸载该软件时可以恢复到原始的php.ini)单击“Next”。
- 安装向导提示“为了继续安装程序需要重新启动IIS服务)单击“是”,安装程序开始重新启动IIS服务,然后安装程序会提示“IIS服务顺利重新启动了”单击“确定”,再单击“finish”完成安装。
- 安装完毕后程序会自动根据你的选择来修改php.ini帮助你启动这个引擎。下面我们来介绍Zend Optimizer的配置选项,帮助你最大化自定义合理的配置。
[Zend]
zend_optimizer.optimization_level=15
zend_extension_ts=“D:wwwZendlibZendExtensionManager.dll”
zend_extension_manager.optimizer_ts=“D:wwwZendlibOptimizer-2.5.3”
※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
[Zend]
zend_optimizer.optimization_level=1023
zend_optimizer.encoder_loader=0
zend_extension_ts=“Crogram FilesZendlibZendOptimizer.dll”
(网上资料中所看到的内容,也许是版本不同造成的内容有差异)
※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
现在我们来介绍上边这些配置文件中相关内容的含义:
zend_optimizer.optimization_level 《== 优化程度,这里定义启动多少个优化过程。
zend_optimizer.encoder_loader 《== 是否允许处理由Zend Encoder加密的PHP文件。
zend_extension_ts 《== 优化器所在目录。
zend_extension_manager.optimizer_ts 《== 优化器管理所在目录。
优化过程 zend_optimizer.optimization_level 详细解释
这里最为重点的部分,仔细看!Zend Opt总共有10个优化过程,从理论上说开的越多性能越好。当然,理论和实际永远都存在着差距。优化过程开启的越多对性能消耗也相对也越大,Zend Opt的10个优化过程并不相同也就是说效果不是平均的。Zend公司定义的最高值(High模式)为15,这里15指的是开启1-4号优化过程。当然,很多朋友并不满足于此,毕竟最高也只开启4个优化过程连总数的一半都没有。各个优化过程的对应的数字代码(值)如下:
不使用 0 <= 如果这样不如不装,还能节约点内存说!
优化过程1(PASS1) 1
优化过程2(PASS2) 2
优化过程3(PASS3) 4
优化过程4(PASS4) 8
优化过程5(PASS5) 16
优化过程6(PASS6) 32
优化过程7(PASS7) 64
优化过程8(PASS8) 128
优化过程9(PASS9) 256
优化过程10(PASS10) 512
以何种方式开启优化过程是通过这些数字代码(值)相加所得的和作为此参数的参数值来控制的。如我的配置文件中 zend_optimizer.optimization_level = 1023 , 这里的1023是优化过程1到优化过程10全部数字代码(值)相加得到的和,表示开启全部10个优化过程。刚才所提到的Zend公司定义的High模式值为15,15表示同时开启优化过程1-4。
加密代码支持 zend_optimizer.encoder_loader 详细解释
对于这个参数,我想如果没有看过Zend Opt FAQ文档的朋友大多数并不知道。这个参数用来告诉Zend Opt是否去支持被Zend Encoder加密过的代码。默认情况下Zend Opt将支持加密过的代码。如果不使用被加密过的代码我推荐你关闭此选项。这个功能牵扯到解包反码的过程,会导致系统负荷的加重。我的朋友已经开发完毕相应的反编译工具,预计春节之后推出。
这个参数的值只有两个 0 关闭, 1 开启。默认为1,推荐设置为0。
模块定位 zend_extension_ts 、zend_extension_manager.optimizer_ts无需解释,这些参数就是Zend Optimizer相关模块在硬盘上的安装路径。
- 如何获知Zend Optimizer是否在运行?
答案很简单,只要用PHP的函数phpinfo()来检测便知,如下所示:
显示的结果中关于Zend Optimizer的部分就象下面这样:
This program makes use of the Zend Scripting Language Engine:
Zend Engine v1.3.0, Copyright © 1998-2004 Zend Technologies with Zend Extension Manager v1.0.3, Copyright © 2003-2004, by Zend Technologies with Zend Optimizer v2.5.3, Copyright © 1998-2004, by Zend Technologies
表示优化成功了。

