不积跬步,无以至千里!
写在前面的话:
对于IIS6中支持php5.2相信使用过php的大多数人都不陌生。但PHP5.3与PHP5.2相比,变化很多。 由于PHP5.3的全新特效及改进,原有的isapi方式解析PHP脚本已经不被支持,PHP从5.3.0以后的版本开始使用微软的 FastCGI模式 ,这是一个更先进的方式,运行速度更快,更稳定!
新版本的PHP5.3通过以往老方法已经不能在IIS上安装了,现在给出在IIS上安装PHP5.3以后版本的教程。
一、下载环境软件
注意事项:PHP 版本选择5.3.x,小版本号越新越好,MySQL 版本选择 5.5.x,小版本号越新越好,没有特殊原因不用其他版本。PHP 尽量使用非安装的绿色版本,MySQL 尽量用安装版本。
1、mysql-5.5
http://dev.mysql.com/downloads/mysql/5.5.html#downloads
2、FastCGI
x86 http://go.microsoft.com/?linkid=9707432
x64 http://go.microsoft.com/?linkid=9707433
3、PHP5.3
http://windows.php.net/downloads/releases/php-5.3.27-nts-win32-VC9-x86.msi
4、phpMyAdmin
http://www.phpmyadmin.net/home_page/downloads.php
二、安装环境软件
1、安装mysql
双击 mysql安装程序-->选择 Custom 自定义安装-->点击 “Change” 更改 MySQL 安装目录,只安装“MySQL Server”组件 其他取消-->待文件复制安装完毕后,进行 MySQL 设置界面,单击 Finish-->选择 Detailed Configuration 进行详细配置-->选择 MySQL 运行模式:Server Machine-->选择 MySQL 数据库默认存储方式:Non-Trans Only (MYISAM)-->设定 MySQL 最大连接数:一般设置为 128 - 512 之间的整数,此处设置为512-->设定 MySQL 网络参数,注意:不要勾选启用 Strict Mode!那个 Addfirewall 的选项仅在需要外连 MySQL 的时候勾选上,也就是说给防火墙加个出入站的策略-->设定 MySQL 默认字符集:以用户站点语言为准,默认我们填 gbk-->Windows 环境设定-->修改设定 root 用户密码,root 密码请设置的比较复杂些。注意:非必要情况下,不要启动远程连接模式! 完成 MySQL 的安装,并启动 MySQL 服务。
2、安装FastCGI 一路下一步即可。 安装完成后到C:\Windows\system32\inetsrv目录找到fcgiext.ini文件,添加下列语句: [Types] php=PHP [PHP] ExePath=C:\php\php-cgi.exe 此为您的php程序安装目录
3、安装PHP5.3
双击 PHP安装程序-->选择IIS FastCGI
注:官方提供的安装包只是将安装过程稍微简化一点而已,没有十分特别的内容。我们完全可以下载Zip包自行解压配置。
开启FastCGI的配置只需要在php.ini里面加入下面的语句:
cgi.force_redirect = 0 cgi.fix_pathinfo= 1 fastcgi.impersonate = 1 upload_tmp_dir="C:\WINDOWS\Temp" 更改临时目录 session.save_path="C:\WINDOWS\Temp" 更改临时目录 error_log="C:\WINDOWS\temp\php-errors.log" 更改临时目录 4、配置IIS 打开IIS管理器,在网站属性中主目录选项卡中,选择“配置”选项,添加ISAPI扩展。 添加拓展名为.php的ISAPI扩展,可执行文件为C:\WINDOWS\system32\inetsrv\fcgiext.dll。 在IIS管理器里面,点击web服务扩展,看FastCGI Handler是不是允许,使之允许。 重启IIS 三、环境设置 1.mysql安装后,打开配置文件my.in查看datadir= 是否为C:\Documents and Settings\All Users\Application Data\MySQL\MySQL Server 5.5\data 修改为自定义目录,最后记得停掉mysql服务,把原data目录中的mysql和performance_schema目录,复制到自定义data目录。 出现此问题是因为安装mysql的时候,安装路径和数据库路径需要分开设置的,数据库路径设置往往被忽略,就成了默认路径。 2.修改php.ini request_order = "CGP" short_open_tag = Off 根据需要设置禁止函数: disable_functions = passthru,exec,system,chroot,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,fsocket,fsockopen,gzinflate date.timezone = "Asia/Shanghai" error_reporting = E_ALL & ~E_NOTICE 3.IIS web扩展服务,只保留fastcGI,其余全部禁止 4.给php安装目录修改权限,添加IIS_WPG用户组,并添加用户权限为读取。经实测,该步骤可略去。 5.关于zend optimizer 从PHP5.3开始如果要支持ZendGuard加密的PHP代码,必须安装Zend Guard Loader,老的zend optimizer将不被支持。 ================================ 附:DedeCMS V5.3/V5.5/V5.7 安全设置指南 附:php版本的选择:
linux下直接下载源码,在服务器上编译即可,发现windows下有4个版本:
VC9 x86 Non Thread Safe
VC9 x86 Thread Safe
VC6 x86 Non Thread Safe
VC6 x86 Thread Safe
网上查看了下4种版本对应使用的情况
一、如何选择 php5.3 的 VC9 版本和 VC6 版本
VC6 版本是使用 Visual Studio 6 编译器编译的,如果你的 PHP 是用 Apache 来架设的,那你就选择 VC6 版本。
VC9 版本是使用 Visual Studio 2008 编译器编译的,如果你的 PHP 是用 IIS 来架设的,那你就选择 VC9 版本。
二、如何选择 PHP5.3 的 Thread Safe 和 Non Thread Safe 版本
先从字面意思上理解,Thread Safe 是线程安全,执行时会进行线程(Thread)安全检查,以防止有新要求就启动新线程的 CGI 执行方式而耗尽系统资源。Non Thread Safe 是非线程安全,在执行时不进行线程(Thread)安全检查。
再来看 PHP 的两种执行方式:ISAPI 和 FastCGI。
ISAPI 执行方式是以 DLL 动态库的形式使用,可以在被用户请求后执行,在处理完一个用户请求后不会马上消失,所以需要进行线程安全检查,这样来提高程序的执行效率,所以如果是以 ISAPI 来执行 PHP,建议选择 Thread Safe 版本;
而 FastCGI 执行方式是以单一线程来执行操作,所以不需要进行线程的安全检查,除去线程安全检查的防护反而可以提高执行效率,所以,如果是以 FastCGI 来执行 PHP,建议选择 Non Thread Safe 版本。
如果需要使用Zend Optimizer的话请使用PHP Thread Safe版,如果不使用Zend,则直接使用PHP NTS版效率会更高。
搭配方案:
php5.2:
IIS6+php5.2 TS+FastCGI +Zend Optimizer
IIS6 +php5.2 NTS +FastCGI
php5.3:
IIS6 +php5.3 NTS +FastCGI +Zend Guard Loader
IIS6 +php5.3 TS +FastCGI