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,如果出现黑漆漆的弹框,说明这里没问题。如果有报错框或者控制台出现其他的信息,则进一步跟进。
参考文章:
IIS 7上部署PHP的更多相关文章
- 在IIS服务器上部署svg/woff/woff2字体
在url没错的前提下,字体文件报404错误,如.woff,.woff2 出错原因: IIS不认SVG,WOFF/WOFF2这几个文件类型 解决方案: 在IIS服务器上部署svg/woff/woff2字 ...
- IIS 7上部署PHP【后续一】
在之前成功在windows 2008+iis7环境下部署php的基础上,今天把之前的挂Q网站转移到了这个服务器下. 文件拷贝到服务器后,问题继续出现. 首先出现的问题是,Mysql的数据库名称和账户密 ...
- IIS上部署Net.Core
部署: 1.安装vc_redist.x64vc_redist.x64 2.安装DotNetCore.1.0.0.RC2-WindowsHosting 3.安装DotNetCore.1.0.0-SDK. ...
- IIS 7 Web服务器上部署ASP.NET网站(转)
IIS 7 Web服务器上部署ASP.NET网站小记 摘自:http://swanmsg.blog.sohu.com/162111073.html 网上查找了很久关于iis7配置asp.net配置问题 ...
- IIS上部署MVC网站,打开后ExtensionlessUrlHandler-Integrated-4.0解决方法IIS上部署MVC网站,打开后500错误
IIS上部署MVC网站,打开后ExtensionlessUrlHandler-Integrated-4.0解决方法 IIS上部署MVC网站,打开后500错误:处理程序“ExtensionlessUrl ...
- IIS上部署MVC网站,打开后ExtensionlessUrlHandler-Integrated-4.0解决方法
IIS上部署MVC网站,打开后ExtensionlessUrlHandler-Integrated-4.0解决方法 IIS上部署MVC网站,打开后500错误:处理程序“ExtensionlessUrl ...
- IIS上部署MVC网站,打开后ExtensionlessUrlHandler-Integrated-4.0解决办法
IIS上部署MVC网站,打开后ExtensionlessUrlHandler-Integrated-4.0解决方法 IIS上部署MVC网站,打开后500错误:处理程序“ExtensionlessUrl ...
- Express在windows IIS上部署详解
最近公司在用Express+angularjs+wcf开发系统,让我在windows上部署系统,遇到不少问题,不过最后还是解决了,在IIS上部署系统, 首先windows需安装以下软件: 1.node ...
- IIS上部署网站404错误
新装的系统上部署.net网站遇到403.404错误,可能原因记录: 1.应用程序池选择错误,一般选择4.0的 2.ASP.NET4.0应用程序池未安装(一般先安装了framework4.0,后安装ii ...
随机推荐
- Android ListView and Tips.
Tips: ListView嵌套ListView,有footerView时.须要又一次measure高度时,footerview最顶层的view不能是RelativeLayout,最好用LinearL ...
- Raid介绍
https://wsgzao.github.io/post/raid/ http://www.cnblogs.com/Bob-FD/p/3409221.html
- Python 父目录获取
# coding=utf-8import os currentPath = os.getcwd() # 当前目录parent_path = os.path.dirname(currentPath) # ...
- Atitit 项目界面h5化静态html化计划---vue.js 把ajax获取到的数据 绑定到表格控件 v2 r33.docx
Atitit 项目界面h5化静态html化计划---vue.js 把ajax获取到的数据 绑定到表格控件 v2 r33.docx 1. 场景:应用在项目列表查询场景下1 1.1. 预计初步掌握vue ...
- IOS解惑(1)之@property(nonatomic,getter=isOn) BOOL on;中的getter解惑
1 问题: @property(nonatomic,getter=isOn) BOOL on; 中的getter = isOn的含义? 2 答案: 如果这个property是 BOOL on, 那么O ...
- Ultraedit使用小技巧
4. 编辑文件如何加入时间戳 ?F7 快捷键即可.你试试看? 5. 为何拷贝(Copy)/粘贴(Paste)功能不能用了?不怕大家笑话,我有几次使用 UltraEdit的过程中发现拷贝与粘贴的内容是不 ...
- CodeSign error: code signing is required for product type Application in SDK iOS XXX的解决办法
转自:http://www.tuicool.com/articles/jYRNbm 在真机测试的时候往往会突然出现这样一个错误,code signing is required for product ...
- ExtJs--05--给window组件加入功能条以及子组件获取上级或下级组件的属性和方法
Ext.onReady(function(){ /** 1-- 给容器组件加入控制条 及 控制项 控制条 不同的方向有多种 tbar lbar rbar bbar fbar 2-- 依据组件本身拿到上 ...
- C++ 读写MySQL经典 (转载)
from: http://blog.csdn.net/jemlee2002/article/details/1523164 看过很多C或是C++操作MySQL数据库的文章,大部分太吃力了,甚至有一 ...
- Fluent UDF【7】:解释型UDF
UDF宏有两种方式可以被Fluent所接受:编译和解释.其中有一些宏既可以被解释也可以被编译,而一些宏则只能被解释.有一些场合只接受编译后的UDF(如动网格中的一些宏),而有些场合既可以接受编译的UD ...