php-5.2.11-Win32.zip的下载地址
http://cn2.php.net/distributions/php-5.2.11-Win32.zip
如果上面的地址不好始,也可以去下面这个地址去从其他镜像下载
http://cn.php.net/get/php-5.2.11-Win32.zip/from/a/mirror
把php-5.2.11-Win32.zip下载回来之后,把里面的文件解压到C:\php目录下(或者是D盘E盘也都行,只是我习惯放C盘)。
还要确认一点,在Vista的“打开或关闭Windows功能”里不但要安装IIS,而且还要安装两个重要的ISAPI组件,如下图:
下面开始配置PHP了……
1、把PHP目录下的php.ini-dist(显示扩展名)改成php.ini,然后用记事本打开,在里面找到extension_dir = "./",然后把里面的./改成c:\php(就是把PHP解压到的那个路径)。
2、还是在php.ini这个文件里,找到下面这三行,把它们前面的分号删掉(带分号是注释的意思)
extension=php_mssql.dll
extension=php_mysql.dll
4、打开Vista管理工具中的“Internet信息服务(IIS)管理器”,在“应用程序池”中新建一个应用程序池,取名为PHP,.Net版本为“无托管代码”。
5、在“ISAPI筛选器”中点右键“添加”,起名为php,可执行文件选成C:\php\php5isapi.dll。
6、在“ISAPI和CGI限制”里点右键“添加”,路径还是选成c:\php\php5isapi.dll,描述还写成php,选中“允许执行扩展路径”。
7、在“处理程序映射”里右键“添加脚本映射”,请求路径填*.php,可执行文件还选c:\php\php5ispai.dll,名称还叫php。
8、以上工作做完后就基本完工了,下面测试:
在IIS指定的站点目录下建一个文件夹,就叫php(我之所以要搭建php+iis,主要是因为我要开发及管理的项目里既有php,也有asp和.net的),然后在这个php目录里新建一个文件phpinfo.php,里面的内容就是经典的PHP测试函数:
phpinfo();
?>
保存后打开浏览器看结果:localhost/php/phpinfo.php,如果能看到类似下面的页面就说明你成功了:
然后就是“确定”,等着安装,接下来是PHP了,在“http://windows.php.net/download/”里下载,我下的是VC9 x86 Thread Safe的Zip包,5.3.1的(写文时最新的)。下好后解压到随便哪个目录里,我放到C:\php目录下,做下面的工作:
1、把目录下的php.ini-development改为php.ini,用记事本打开;
2、fastcgi.impersonate=1(并把行首的分号删掉,下同)
3、 cgi.fix_pathinfo=1
4、cgi.force_redirect=0
5、extension_dir="./ext"
6、打开需要的扩展,比如extension=php_mysql.dll
在第6点上我说明一下,一开始照多数文档来做,连php_mssql.dll打一起打开,结果一直不成功,原因是有ext目录里根本就没有php_mssql.dll这个文件,关于mssql的支持我还没搞明白,这里就暂时不打开php_mysql.dll,这样就能顺利通过。
7、这一步很多文档里也没有,date.timezone= Asia/Shanghai(按照PHP的文档,这里不只可以设置成Shanghai,还有Chongqing等地也可以,详情参考:http://www.php.net/manual/en/timezones.asia.php。
好了,以上几点做完,PHP部分就可以结束了,可以在“开始-运行-cmd”下试着运行c:\php\php -info和c:\php\php -v,正常来说-info参数可以看到一大堆参数信息,而-v参数可以看到php的版本信息,如果把dll文件不存在的扩展打开了的话,-v时会有提示。
下面,回到IIS上,打开IIS控制台,在左边树中选最顶级结点,也就是你的电脑名,然后在中间(功能视图)里打开“Handler Mappings”(中文叫“处理程序映射”),如下图:
打开之后在最右边点“添加模块映射”(Add Module Mapping),照下图添加信息:
(对不起,图是微软的,看不清,下面说一下)
请求路径:*.php
模块:FastCgiModule
可执行文件:c:\php\php-cgi.exe(这里说一下,选的时候把类型由dll改成exe)
名称:PHP via FastCGI
然后OK,再然后Yes(如图)
重启IIS!
到此,就可以enjoy了,怎么试?
做一个test.php文件,里面的内容是<?php phpinfo(); ?>,然后在浏览器里打localhost/..../text.php。
(这一界面我用我自己的图,以证明我真配成了)
(最后),我其实不太懂PHP,非常菜,只是偶尔用一些PHP源码,所以这里我所写的东西都是说给像我这样很菜的人看的,高人来指点欢迎,羞辱我水平的请绕行,省省键盘。
通过命令行
启用详细错误:
%windir%\system32\inetsrv\appcmd.exe set config "Default Web Site/yourapp" /section:httpErrors /errorMode:Detailed
禁用详细错误:
%windir%\system32\inetsrv\appcmd.exe set config "Default Web Site/yourapp" /section:httpErrors /errorMode:Custom
通过 web.config 配置其实,上面在两种配置,最终都会反应到对应的 web.config 中。因此,我们可以直接编辑 web.config。特别是对于买的虚拟主机(Shared Web Hosting),没有权限更改IIS。打开网站目录,找到 web.config 文件(如果没有,就建立一个 txt 文件存为 web.config),找到 system.webServer 配置节,添加配置 <httpErrors errorMode="DetailedLocalOnly" />。
<system.webServer>
<httpErrors errorMode="DetailedLocalOnly" />
</system.webServer>
</configuration>
注意
- 此参数选项可以应用到网站或子目录或虚拟目录。
- 此参数选项对所有 IIS 应用程序有效,包括 ASP, APS.NET, PHP 等。
如果是 ASP.NET 程序,可能还需要配置 <customErrors mode=”Off” />
此外,如果是 ASP 程序,还可以配置 sendErrorsToBrowser 选项:
通过 IIS 配置通过命令行
启用:
%windir%\system32\inetsrv\appcmd set config -section:asp -scriptErrorSentToBrowser:true
禁用:
%windir%\system32\inetsrv\appcmd set config -section:asp -scriptErrorSentToBrowser:false
注意上面参数中 config 后面不能指定站点目录
其他链接:
The new Configuration System in IIS 7 http://blogs.msdn.com/carlosag/archive/2006/04/25/IIS7ConfigurationSystem.aspx
System.webServer Section Group http://msdn.microsoft.com/en-us/library/ms689429.aspx
Improve PHP Error Messages in IIS 7 http://learn.iis.net/page.aspx/765/improve-php-error-messages-in-iis-7/
Tips for Classic ASP developers on IIS7 http://blogs.iis.net/bills/archive/2007/05/21/tips-for-classic-asp-developers-on-iis7.aspx
IIS 7 父子目录同时安装 WordPress 时固定链接的问题 http://blogs.leoworks.net/php2010/2010/01/13/break-iis7-url-rewrite-rule-inheritance-for-parent-child-wordpress/