现下流行LAMP,如果选择Windows服务器,那么一般都会选择IIS+Asp.Net+SQL Server(可以简称为WINS),这些配置起来,都是非常方便的。

但也有一些特殊的服务器配置,例如:Windows 2008 R2 x64 + IIS 7 + PHP + SQL Server 2008 R2 x64(简称为WIPS),将Asp.Net换为PHP,原本以为很简单的一件事,结果折腾了好几天才搞定。

为了给其他人留下一点前车之鉴,特写此文。

相关理论

1. IIS支持多种方式来扩展语言,对于IIS7来说,通过FastCGI方式来执行PHP文件

2. PHP通过配置文件中的“extension”项,扩展支持一些功能,但目前PHP本身不再提供支持MS SQL Server的组件,幸好微软提供了(但这里有个大大的陷阱)

3. 微软提供的PHP的扩展组件,支持访问MS SQL Server,需要Visual Studio C++ Redistributable的支持,这个微软也提供了

4. 还需要微软的MS SQL Server Native Client作为驱动

通过上述一环扣一环,就可以实现在Windows服务器上,在IIS+PHP的环境下,访问MS SQL Server了。

细数几个大坑

坑1:访问SQL Server 2008 R2,需要安装Microsoft SQL Server 2012 Native Client

坑2:微软提供的PHP组件,只支持32位,也就是x86平台;虽然PHP自身提供了支持x64平台的,但是这两个是配不上的

坑3:若一定要在Windows Server 64bit(x64),PHP选择x64,则不能选择IIS;替代选项是Apache,而且PHP SQL Server组件需要特殊定制的非官方版;而且Apache官方不提供Windows版了,要去第三方下载

坑4:PHP有TS、NTS之分,又有x86、x64之分;Visual Studio C++ Redistributable则有2008、2010、2012、2015之分,而且也有x86、x64之分,不同的Visual Studio C++ Redistributable版本对应不同的PHP版本。一个不小心,就掉坑里了

版本对应关系:

1、选择IIS,则PHP版本必须选择x86、nts

2、PHP版本号有VC*这样的内容,和Visual Studio C++ Redistributable对应关系是:VC9-VS2008 SP1、VC11-VS2012、VC14-VS2015

PHP版本选择x86,则Visual Studio C++ Redistributable也必须是x86;反之,则都必须选择x64

准备项

1、IIS扩展支持FastCGI,如下图,必须勾选上“CGI”选项

安装方式一(推荐)

如果服务器可以访问Internet的话,推荐选择Web Platform Installer,省心省力,但是只有5.2.17和5.3.5两个版本可以选。

1、打开网址:http://www.microsoft.com/web/platform/phponwindows.aspx

2、选择好版本,点击对应的按钮,进入如下界面,这里以5.3.5版本为例

3、点击“Install Now”,可以下载获得一个PHP53.exe文件,运行之,可以到如下界面,点击“Install”

4、这里会列出需要安装的组件,点击“I Accept”

5、接下来是漫长的安装过程,如果中途失败了,继续从第3步开始,按照相同节奏来一次,直至全部安装成功

安装成功后,可以看到具体的安装的组件。

6、安装成功后,可以通过PHP Manager来查看安装后的PHP路径

安装方式二(PHP Manager或手工)

1、安装Microsoft SQL Server 2012 Native Client,安装文件可以去微软官网下载

2、下载PHP包,一定要选择x86和nts的,并解压文件到“Program Files (x86)”目录下。

3、根据PHP包的VC版本,安装Visual Studio C++ Redistributable,请选择x86版本,VS的版本号,请参考上述对应关系,安装文件可以去微软官网下载

4、去微软官网下载Microsoft Drivers for PHP for SQL Server,也就是PHP的SQL访问组件,执行解压出DLL文件

5、将PHP的SQL访问组件,根据PHP版本号挑选出nts类型的dll,复制到PHP录下的ext子文件夹

6、推荐安装PHP Manager,可以协助更快的配置,安装文件请自行搜索去

7、启动IIS管理工具,选择“PHP Manager”

8、通过PHP Manager,通过“Register new PHP version”,选择PHP目录下的php-cgi.exe

9、启动PHP Extensions,点击“Enable or disabled an extension”,启动PHP的扩展组件,这样就可以启动PHP访问SQL的组件

10、其他PHP配置项,建议直接编辑PHP.INI文件,根据你的实际情况,增加如下内容:

[WebPIChanges]
error_log=C:\Windows\temp\PHP53_errors.log
upload_tmp_dir=C:\Windows\temp
session.save_path=C:\Windows\temp
cgi.force_redirect=0
cgi.fix_pathinfo=1
fastcgi.impersonate=1
fastcgi.logging=0
max_execution_time=300
date.timezone=Asia/Shanghai
extension_dir="C:\Program Files (x86)\PHP\v5.3\ext\" [ExtensionList]
extension=php_mysql.dll
extension=php_mysqli.dll
extension=php_mbstring.dll
extension=php_gd2.dll
extension=php_gettext.dll
extension=php_curl.dll
extension=php_exif.dll
extension=php_xmlrpc.dll
extension=php_openssl.dll
extension=php_soap.dll
extension=php_pdo_mysql.dll
extension=php_pdo_sqlite.dll
extension=php_imap.dll
extension=php_tidy.dll extension=php_pdo_sqlsrv.dll extension=php_sqlsrv.dll

11、这时候就可以开始检测结果,打开PHPinfo文件,在“Registered PHP Streams”,我们可以看到sqlsrv,这就代表PHP可以访问SQL Server了。

至此,我们就成功的完成了Windows 2008 R2 x64 + IIS 7.0 + PHP 5.3.2 + SQL Server 2008 R2 x64的环境配置了。

当然,这样的环境,其实是运行在32位x86的环境中。

如果真的要运行在64位x64的环境中,则必须是Windows 2008 R2 x64 + Apache 2.4 + PHP 5.3.2 + SQL Server 2008 R2 x64这样的环境配置,这个以后再补写相关记录了。

【博客开篇】服务器配置:Windows2008R2+PHP5.6+SQLServer2008(X64)的更多相关文章

  1. 博客开篇:随笔《从windows到linux的转变》。

    在QQ群里讨论到了WINDOWS和LINUX.MAC,用手机码了如下回复,索性转过来当做博客的开篇.:) unix 和linux 在外很火的主要原因是开源,国外崇尚自由的精神是从出生就在细胞里的,而w ...

  2. 我的学习笔记之node----node.js+socket.io实时聊天(1) (谨此纪念博客开篇)

    本想着从hello word开篇,也确实写了相关学习笔记.各种原因吧,现在又着急写出作品,便作罢. 这里将记录一个node.js+socket.io的实时聊天程序.(当然我也是跟着网上各种教程资料学习 ...

  3. 个人技术博客——linux服务器配置以及flask框架

    本次的软件工程实践,我负责我们组后台服务的搭建,我选用了bandwagon的服务器,安装的是Debian GNU/Linux,全程在root用户下操作,后端服务是用python的flask框架,数据库 ...

  4. CentOS 6.2编译安装Nginx1.2.0+MySQL5.5.25+PHP5.3.13+博客系统WordPress3.3.2

    说明: 操作系统:CentOS 6.2 32位 系统安装教程:CentOS 6.2安装(超级详细图解教程): http://www.osyunwei.com/archives/1537.html 准备 ...

  5. fn先生开篇博客

    开篇博客,也不清楚要写点啥nie,以前好像在CSDN上写过一点,但是由于本人工作号一直在变,忘了CSDN上的账号密码(尴尬...不确定这个以后会不会再次丢失呀),重新在开始吧. 记得以前,一直有朋友说 ...

  6. 一、Java多人博客系统-开篇

    作为一个程序员,工作之外的不断学习是必须的.这个项目是我个人课外学习和练手的项目.最开始是一个个人网站.当时发现京东云可以免费部署网站的,就立即写了一个网站,当时就使用jsp技术,可以实现发布博客.评 ...

  7. 开篇~试试word写博客

    word发布博客设置,mark一下 原帖地址:http://www.cnblogs.com/liuxianan/archive/2013/04/13/3018732.html word代码高亮插件:h ...

  8. Android应用开发-小巫CSDN博客客户端开发开篇

    2014年9月8日 八月十五 祝各位中秋节快乐 小巫断断续续花了几个星期的时间开发了这么一款应用——小巫CSDN博客,属于私人定制的这样的一款应用,整个客户端的数据全部来自本人博客,是通过爬取本人博客 ...

  9. SAE+WordPress快速搭建个人博客

    前些天一时冲动,买了个域名,我想总不能放着不用吧,干脆就搭建了一个个人博客.下面我把搭建的过程分享给大家.注意,此文并不是攻略,只是为了记录下这个从无到有的过程,当然,假如解决了你的疑惑,那当然是极好 ...

随机推荐

  1. 关于怎样获取DevExpress GridView过滤后或排序后的数据集问题(转)

    GridView用自带的过滤功能过滤数据后,想要获取过滤后的数据集,有两种方式: 一.笨办法就是循环遍历GridView,根据gridView.GetRow()或者gridView.GetDataRo ...

  2. 1、链表之增、删、查实现(C语言)

    一.功能描述: 可以创建节点并添加到链表中.查看链表中的所有节点.并可以删除特定的节点 二.代码实现 1.主函数main主要实现的是从后台键入不同的字符,执行对应的函数来实现特定的操作代码如下: in ...

  3. Windows下Mysql5.7忘记root密码的解决方法

    找到mysql5.7安装的目录,我这里是:C:\Program Files\MySQL\MySQL Server 5.7 先停止mysql服务 在服务里找到MySQL57服务,停掉它. 修改my.in ...

  4. Linux系统编程——水平触发和边沿触发

    事件模型 EPOLL事件有两种模型: Edge Triggered (ET) 边缘触发只有数据到来才触发,不管缓存区中是否还有数据. Level Triggered (LT) 水平触发只要有数据都会触 ...

  5. three.js中的文字

    1.三维文字 三维字体文字,使用的是FontLoader,字体文件通过来facetype.js生成 addCityText: function () { var self = this; var ci ...

  6. linux下各安装包的安装方法

    <转>linux下各安装包的安装方法   一.rpm包安装方式步骤: 1.找到相应的软件包,比如soft.version.rpm,下载到本机某个目录: 2.打开一个终端,su -成root ...

  7. 复习python(条件判断、循环、字符串格式化)

    1.条件判断: 只有一种 if: *** elif:#多个条件加elif,想加几个加几个 **** else: **** python里靠缩进来表示表示语句块,见到冒号,下行就要缩进 2.循环 两种, ...

  8. sql 实现学生成绩并列排名算法

    SELECT uname, score , 排名=(SELECT COUNT(score) FROM FenShu WHERE Score > a.Score) + 1FROM FenShu a ...

  9. vector用法

    转:http://www.cnblogs.com/wang7/archive/2012/04/27/2474138.html 在c++中,vector是一个十分有用的容器,下面对这个容器做一下总结. ...

  10. IDEA overwrite报错、languagelevel设置不生效问题

    发现idea 倒入项目后,发现@override报错,发现是idea的jdk版本不对,需要设置大于1.5的jdk版本 解决办法: IDEA:File >> Project Structur ...