IIS 7上部署PHP
前言
前段时间整了一个挂Q的平台。源代码是从网上下载的,后期稍微调整了一下链接和title之类的文字就上线了。详细在这里。
运行了一段时间,除了偶尔出现QQ下线上线,整体效果基本上符合预期,个人感觉很满意,也小有成就感。
但是运行了个把星期后,免费空间不给力了。提醒我网站挂起,原因是超过1000次CPU使用超过20%,要求去hos***24上整一个无限制的。
本来吧,我不愿意这么麻烦去换空间。但是用了一年多三蛋空间,感觉时不时的不给力,一会儿网站删除了,一会儿因为这种那种原因挂起了;恰好手头上还有另一个空间,amazon的一年免费空间,暂时就先顶着吧。
但是问题也来了,亚马逊的虚拟服务器是windows 2008的系统,最初设计的时候是为了承载一个asp.net的网站,安装了IIS 7.5+.net4.0/4.5。对于php+mysql的组合,没有做任何的相关配置。
既然如此,少不得从(bai)零(du)开始。
百度出来的结果挺多也挺详细的,图文并茂,有安装有配置,very good, let's start it!
正文
Firstly,先下载相关的文件:下载PHP , 下载Mysql.
下载PHP时要留意,我下载的是文件php-5.6.3-Win32-VC11-x64.zip,这里有几个信息,版本5.6.3,x64的,这里还有一个VC11。
VC9 and VC11
More recent versions of PHP are built with VC9 or VC11 (Visual Studio 2008 and 2012 compiler respectively) and include improvements in performance and stability.
The VC9 builds require you to have theVisual C++ Redistributable for Visual Studio 2008 SP1 x86 or x64 installed.
The VC11 builds require to have the Visual C++ Redistributable for Visual Studio 2012x86 or x64 installed.
这是PHP的官方解释,也就是说VC11对应的需要Visual C++ Redistributable 2012版本的环境,而VC9则需要c++2008版本的环境。这个要特别留意。搞错了版本,后面浏览php页面时会失败。
VC++如有必要则需安装,如果电脑上已有相应的版本,则不需考虑。
第二步:配置PHP。主要是配置php.ini
下载的包直接解压缩到c:\PHP文件夹。复制其中的php-development.ini为php.ini,并进行如下修改(要去掉开头分号):
①修改扩展路径:extension_dir = "c:\PHP\ext" (这里写自己的实际路径)
②找到要扩展的部件(可能不止一个),如:extension = php_mysql.dll(这里留意,按需取消前面的;注释,不要图方便全部取消,可能会报错的,笔者经历...)
③时区:date.timezone = asia/shanghai
④fastcgi.impersonate=1 默认为0,如果使用IIS,你需要开启为1
⑤cgi.fix_pathinfo=1
⑥cgi.force_redirect=0 默认为1,如果你使用IIS,需要将其关闭为0
⑦session存储路径,如:session.save_path = "d:\server\web\session" (这里写一个保存session的路径)
配置完成后,将php.ini拷贝一份放到c:\windows下。在win7的IIS7上配置php时,并不需要把php.ini和相关文件拷到系统目录下了。
第三步:设置IIS。(安装过程不说了,确保iis上安装了cgi模块)
打开IIS,选中站点,打开处理程序映射界面。
在右侧操作选项卡中点击“添加模块映射”,根据图中所示配置好各个选项即可。点击“是”,模块安装成功。
点击ISAPI和CGI限制,点击添加,路径为C:\php\php-cgi.exe,描述可写php,允许执行扩展路径,确定。
第四步:检验成果
在IIS里面新建一个网站,将端口设置成除80以外的其他端口,例如1234,在网站的文件夹下新建一个文件index.php,在里面输入
<?php phpinfo(); ?>
设置站点的默认页面为index.php。
在浏览器中输入"http://localhost:1234",将看到下面的画面,到此php配置成功。
可能出现的问题:
Q:“the program can't start because msvcr110.dll...”
A:Visual C++的版本不正确。
Q:"500 php-cgi.exe 报错"
A:这类错误十之八九是由于php.ini的配置导致的。上面两种情况都会出现这个报错。直接的方法运行php文件夹中的php-cgi.exe,如果出现黑漆漆的弹框,说明这里没问题。如果有报错框或者控制台出现其他的信息,则进一步跟进。