因为服务器已经全面升级到了windows2008R2,所以没有再关注windows2003系统。最近有朋友问我2003上装PHP5.3.5 不成功,因为PHP5.3.5文件结构和老版本不一样了,所以,今天撰文,给需要在windows2003上安装支持fastCGI的PHP5.3.5的朋友:
相信能看到这篇文章的不是环境设置菜鸟-(G无歧义),所以,一些比较简单的我就一带而过了……(此处省略1W字^.^(*)()(())))0000))
安装fastcGI+PHP5.3.5有两种方式,一种是下载web平台安装程序3.0(最新版),这款工具很好,我现在也在用,里面集成了很多服务器环境以及工具的下载安装,这种方式的好处不需要自己介入,但缺点是安装过程中的自主性不大,适合菜鸟或者怕麻烦的人。另外一种就是下载所需程序自己安装,自主性强,安装过程中可以设置比如安装路径。此处介绍第二种方法——下载程序自己安装。
第一部分:IIS6+PHP5.3
1.下载 FastCGI For IIS6
http://www.iis.net/expand/fastcgi (不同版本可能路径有所不同,请参考!)
打开页面后点右边 download x86 / x64 看看你服务器选择下载
下载之后,双击运行进行安装。
安装后在 C:\WINDOWS\system32\inetsrv 目录下产生了五个文件。
同时在 IIS 的 “Web 服务扩展”里多了 FastCGI Handler2.下载 PHP5.3.5 Windows 版
http://www.php.net/downloads.php (不同版本可能路径有所不同,请参考!)
下载 .zip 格式的版本,下载后解压至 D:\PHP 目录,并给 IIS 启动帐户组或用户赋予读取和运行权限。
你可以根据自己的意愿解压到别的目录。
3. 注册 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%\system32\inetsrv directory.
我个人的理解是,只要“Web 服务扩展”里的 FastCGI Handler 为允许时,在加载 fcgiext.dll 时,会读取 fcgiext.ini 配置文件的内容,根据里面的配置为每个网站提供映射。
在 [Types] 下添加以下配置:
[Types]
php=PHP
[PHP]
ExePath=D:\PHP\php-cgi.exe (不同习惯可能设置的路径有所不同,仅此参考!)
“php”表示扩展名,“PHP”是配置节名称,以“[PHP]”定义。
4. 配置 php.ini
将 D:\PHP\php.ini-production 复制一个,然后重命名为 D:\PHP\php.ini
打开 D:\PHP\php.ini,
修改PHP.ini文件:
1。第531行改为:display_errors = On
2。第542行改为:display_startup_errors = On
3。第624行改为:error_prepend_string = “<br><font color=#ff0000>”
4。第630行改为:error_append_string = “</font><br><br>”
5。第813行改为:extension_dir = “D:\php\php_setup_files\php-5.3.5-vc9\ext\”
6。第854行改为:fastcgi.impersonate = 1
7。从948行到988行根据自己的需要修改
8。第997行改为:date.timezone = asia/Shanghai
其它的根据实际需要对 php.ini 进行设置修改,这里只针对能跑 php,修改完记得重启 IIS。
5. 配置网站
右键网站 => 属性 => 主目录 => 配置 => 添加,
可执行文件路径:C:\WINDOWS\system32\inetsrv\fcgiext.dll
6. 写个 php 测试下吧
<?php
phpinfo();
?>
PHP目录权限:IWAM_机器名称(感觉它的权限更小些,但两种权限都能正常运行)
错误信息:
1。Error Number: 14001 (0x800736b1).
没有安装Microsoft Visual C++ 2008 Redistributable Package
下载地址:http://www.microsoft.com/downloads/details.aspx?familyid=9B2DA534-3E03-4391-8A4D-074B9F2BC1BF&displaylang=zh-cn
2。Error Number: 5 (0×80070005).
Unable to place a FastCGI process in a JobObject. Try disable the Application Pool CPU Limit feature
取消CPU的监视
3。No input file specified.
估计是没配置 fastcgi.impersonate。
第一步、安装 FastCGI For IIS6
将下载得到的fcgisetup32.msi,双击运行进行安装。
安装后在 C:\WINDOWS\system32\inetsrv 目录下产生了五个文件。
第二步、安装PHP
由于PHP5.3.5的全新特效及改进,原有的isapi方式解析PHP脚本已经不被支持,PHP从5.3.0以后的版本开始使用微软的fastcgi模式,这是一个更先进的方式,运行速度更快,更稳定!新版本的PHP5.3通过以往老方法已经不能在IIS上安装了,下载IIS下的PHP,(注意IIS下要选择VC9的版本)解压到所需目录,该目录需要给予user读取运行权限,
打开 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%\system32\inetsrv directory.
在 [Types] (约第162行)下添加以下配置:
[Types]
php=PHP
[PHP]
ExePath=D:\PHP\PHP5\php-cgi.exe
这里要用:“\”不能用“/”,“php”表示扩展名,“PHP”是配置节名称,以“[PHP]”定义。 (选你自己的安装的目录,下同。)
D:\PHP\php5目录下的php.ini-development复制一份,更名为php.ini(还是在当前目录中),再用文本编辑软件打开这个 php.ini(建议使用Notepad2、EditPlus、UltraEdit等各种支持语法高亮显示的文本编辑软件)。
查找:extension_dir = “./” (约第813行)
将其路径知道你的PHP目录下的扩展功能目录中,这里PHP5对应修改为extension_dir = “D:/PHP/php5/ext” 。
再在D:\PHP下建立文件夹,并命名为upload_tmp
查找 ;upload_tmp_dir = (约第879行)
将;upload_tmp_dir =该行的注释符,即前面的分号”;”去掉,使该行在php.ini文档中起作用。
upload_tmp_dir是用来定义上传文件存放的临时路径,在这里你还可以修改并给其定义一个决定路径,需要注意的是,这里设置的目录必须有读、写权限。
这里我设置为upload_tmp_dir = “D:/PHP/upload_tmp/” (这里就是我前面建立的文件夹)
找到:fastcgi.impersonate = 1;约854行这句,把前面的;去掉,
fastcgi.impersonate = 1
short_open_tag= On
搜索 ; Windows Extensions,定位到php.ini文件的约942行,将下面列出的常用扩展前面的分号注释符去掉:
; 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 |
特别提示:
去掉前面的分号注释符,这里将其设置为 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种方法可以恢复正常的时间。 1、如果要用5.1以上版本,而且不修改php.ini,则需要在关于时间的初始化的语句的上面加上date_default_timezone_set (XXX),或者使用date(‘Y-m-d G:i:T’, strtotime(‘+8HOUR’) )来获取日期时间; 2、一劳永逸,仅限能修改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 = “D:/PHP/upload_tmp“ (这里就是我前面建立的文件夹)
在大约第440行,
max_execution_time = 30 ; 这个是每个脚本运行的最长时间,根据你的需求更改数值,单位秒
max_input_time = 60 ; 这是每个脚本可以消耗的时间,根据你的需求更改数值,单位也是秒
memory_limit = 128M ; 这个是脚本运行最大消耗的内存,根据你的需求更改数值,256M。
大约第732行,
post_max_size =10M
表单提交最大数据为10M.此项不是限制上传单个文件的大小,而是针对整个表单的提交数据进行限制的.
限制范围包括表单提交的所有内容.例如:发表贴子时,贴子标题,内容,附件等…根据你的需求更改数值,M是单位:兆。
大约第883行,
upload_max_filesize = 2M ;
上载文件的最大许可大小 ,根据你的需求更改数值,M是单位:兆。
在论坛发表贴子时,您post_max_size 设为10M,而此项设成了2M,那么您只能上传最大为2M的附件,且可以同时上传5个.
php.ini文件中基本就是作如上修改,其他的你可以根据自己的具体需求修改,可见附后:PHP5.3.5特除配置。然后将该文件保存,再复制一份到C:\Windows下面。如果PHP5是装在C盘,因这个”备份”文件的存在,会干扰了FastCGI的运行,只有把 C:\php\php.ini 删除,不删除有时IIS报500错!
配置网站
建立一个网站,phpinfo.php文件内容为:
文件:phpinfo.php
<?php
phpinfo();
?>
微软Web平台确实方便,不过终归是程序,有一些错漏的地方还需要人工纠正。FastCGI安装后出现1413错误,主要是因为FastCGI配置文件没有配置好。
昨天获知微软Web平台之后,如获至宝,赶紧安装。然而安装之后,运行PHP程序时却提示错误:
1、404错误:找不到文件。
这个错误我比较了解,大概是PHP文件没有置顶处理程序的缘故,只要在网站配置中做一下“程序扩展名影射”即可。影射如下:
可执行文件:C:\WINDOWS\system32\inetsrv\fcgiext.dll
扩展名:.php
动作限制为:GET,HEAD,POST
2、做了映射后,FastCGI本身出错。错误为:
FastCGI Error
The FastCGI Handler was unable to process the request.
--------------------------------------------------------------------------------
Error Details:
Could not find entry for "php" on site 2043809562 in [Types] section.
Error Number: 1413 (0x80070585).
Error Description: 无效索引。
HTTP Error 500 - Server Error.
Internet Information Services (IIS)
这个错误我就没处理过了,后来找到了这个页面:http://forums.iis.net/t/1146956.aspx,知道原来FastCGI也有配置文件的,文件名:
C:\WINDOWS\system32\inetsrv\fcgiext.ini
我的服务器出现这个错误,是因为微软Web平台配置程序没有正确配置这个文件,正确的配置应该如下:
[Types]
php=PHP
[PHP]
ExePath=C:\Program Files\PHP\php-cgi.exe
InstanceMaxRequests=10000
ActivityTimeout=300
RequestTimeout=600
EnvironmentVars=PHP_FCGI_MAX_REQUESTS:10000,PHPRC:C:\Program Files\PHP\
这样配置之后,PHP程序就可以正常运作啦!
顺便说一句,微软Web平台安装FastCGI时,会自动选择合适的PHP版本(32位或64位),不需要人工去区别了。