问题:

最近要上线一个PHP写成的MVC项目,发现Windows Server 2008安装的还是PHP5.2,很多语法不支持。

尝试的一些解决方案:

1.将PHP升级为5.6,但是需要做好IIS和PHP的配置,因为IIS还承担了其他几个Web项目的运行,所以这个方案也是目前最稳妥的办法。

2.在Windows Server 2008上安装Apache或者Nginx,因为Apache或者Nginx和PHP搭配更佳,但是Apache在Windows Server 2008上表现不好,另外这个方案还有个缺点是另外需要配置子域名等,之前没有研究过这方面,所以这个方案备选。

最终解决方案:

1.在安装PHP5.6之前,先检查一下是否有Visual C++ 2012运行环境(发行包)。如果没有,先在微软下载中心下载安装。

这里提供下载链接:x86版本x64版本

2.在PHP官网下载PHP5.6,解压缩到任意盘符任意文件夹,当然,如果你想在IIS配置上“偷个懒”的话,可以把原来PHP文件夹改名为PHP5.2,把PHP5.6改为PHP,来替换原来的路径。

接下来是一些较为复杂的步骤,请坐稳了,我们要加速了~

3.在php.ini中修改或确保要有以下配置:

cgi.force_redirect = 0

配置的注释上写:

cgi.force_redirect is necessary to provide security running PHP as a CGI under most web servers. Left undefined, PHP turns this on by default. You can turn it off here AT YOUR OWN RISK. You CAN safely turn this off for IIS, in fact, you MUST.

其实,本意是希望提供安全的CGI,但是IIS下,你还是必须把TA关了。

cgi.fix_pathinfo=1

配置的注释上写:

cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI. PHP's previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok what PATH_INFO is. For more information on PATH_INFO, see the cgi specs. Setting this to 1 will cause PHP CGI to fix its paths to conform to the spec. A setting of zero causes PHP to behave as before. Default is 1. You should fix your scripts to use SCRIPT_FILENAME rather than PATH_TRANSLATED.

这里没有IIS,所以设置为1即可。

fastcgi.impersonate = 1

配置的注释上写:

FastCGI under IIS (on WINNT based OS) supports the ability to impersonate security tokens of the calling client. This allows IIS to define the security context that the request runs under. mod_fastcgi under Apache does not currently support this feature (03/17/2002)

Set to 1 if running under IIS. Default is zero.

这里很感动此处的注释,把坑都说明清楚了,IIS下,让你设置为1就应该设置为1。

date.timezone = Asia/Shanghai

时区设置为亚洲上海,但实际上这个配置似乎只作用于你用phpinfo()函数来查看PHP版本,真要用到时区在项目里再写一句声明也可以,已亲测。

4.在IIS中添加程序映射

这一步其实不难理解,就是让所有的PHP文件都用CGI来执行,所以把php-cgi.exe这个可执行文件的路径填写进去就可以了。

原来在ISAPI限制和CGI限制里有原来PHP5.2的条款,因为PHP5.2和PHP5.6不一样,5.6版本已经没有php5isapi.dll这个文件了,也就是说5.6版本已经放弃dll而采用cgi可执行文件,所以可以把这条删除或者设置为“不允许”。如果要填写就填写php-cgi.exe的路径,记得加引号。

至此,已经可以在浏览器中看到这个熟悉的页面了。

 总结:

其实,我们本来要放弃这个方案的,因为中午被一个500状态码搞得焦头烂额,不知道问题出在哪里,后来又出现了php-cgi.exe - FastCGI 进程意外退出无法定位程序输入点 php5ts.dll这样的错误,后来我直接运行了php-cgi.exe,发现在命令行中出现的路径并不是PHP5.6的文件夹路径,才发现问题。于是我直接把PHP5.6文件夹命名为原来PHP文件夹的名称,问题顺利解决。但问题是没了,似乎还是遗留下来了一个疑点,究竟少了哪一步?以后如果IIS从零配置PHP,还是会遇到这个问题。

Windows Server 2008 配置IIS+PHP的更多相关文章

  1. Windows Server 2008 R2 IIS重装

    背景描述: 在一个刚睡醒午觉后的下午,忽然收到客户反馈,说昨天开始应用特别卡,各种卡各种不好用,忽然想到上次说要优化服务器IIS配置还一直没弄,然后迷迷糊糊的就开始进行客户现场服务器IIS配置优化,涉 ...

  2. Windows Server 2008配置系统安全策略

    下面学习Windows Server 2008配置系统安全策略 在工作组中的计算机本地安全策略有 用户策略,密码策略,密码过期默认42天 服务账户设置成永不过期,帐户锁定策略,本地策略,审核策略,计算 ...

  3. windows server 2008 配置DNS服务器与IIS

    0x00: 总结这个星期在学校学的. 0x01安装: 首先你得安装好windows server 2008 然后在添加角色->安装IIS和DNS服务器 勾选好你要安装的. 安装-> 根据老 ...

  4. 使用LVS实现负载平衡之Windows Server 2008配置

    LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统.本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一.承载于 II ...

  5. Windows Server 2008 R2 + IIS 环境部署Asp.Net Core App

    Windows + IIS 环境部署Asp.Net Core App   环境:Windows Server 2012, IIS 8, Asp.Net Core 1.1. 不少人第一次在IIS中部署A ...

  6. c# webapi发布到windows server 2008 r2 iis上提示404错误

    项目服务端是一组RestFul风格的webapi,发布到本机的iis没有问题,但是发布到服务器以后就提示404错误.本机是win10的,服务器是windows server 2008 R2 64位.之 ...

  7. windows server 2008 配置安装AD 域控制器

    工作需要,搞起AD域来,具体配置如下: 配置环境 Windows版本:Windows Server 2008 R2 Enterprise Service Pack 1 系统类型: 64 位操作系统 配 ...

  8. Windows Server 2016 配置 IIS 的详细步骤

    Ø  简介 本文主要记录 Windows Server 2016 环境下,安装配置 IIS 的详细步骤.需要说明的是,在选择"功能"或"角色服务"时不建议将所有 ...

  9. Windows Server 2012配置iis遇到的问题

    发布网站访问时报500 - 内部服务器错误,经排查是Windows Server 2012上的iis配置有问题,有些需要的功能没有配置. 在重新配置iis时总是安装失败,提示存储空间不足. 在网上查找 ...

随机推荐

  1. SQL Server 实现Split函数

    添加一个表值函数. CREATE function [dbo].[fnSplit] ( ), --要分割的字符串 ) --字符串之间的分隔符 ) ,), TempName )) as begin de ...

  2. js中的事件,内置对象,正则表达式

    [JS中的事件分类] 1.鼠标事件: click/dbclick/mouseover/mouseout/mousemove/mousedown/mouseup 2.键盘事件: keydown: 键盘按 ...

  3. 使用Swagger实现webapi接口自动化文档生成

    这里是实现自动化api稳当的生成,在网上看了很多swagger的文档,可能都是在为实现接口时直接使用的swagger,其实步骤差不多,但是更加详细的我还没看到,又或者说,我看着文档来的时候还是出错啦, ...

  4. Matlab: 作图

    控制图的大小 figure('position',[x0,y0,dx,dy]); figure(fig number); 显示图例 legend('leg1','leg2') depend on ho ...

  5. 使用linux sort给一个文件里的内容按规则排序

    任务:report.txt文件里有以下内容:记录了一些方法的执行时间,要求按执行时间降序排列. void com.dustpan.zeus.core.service.MergeService.star ...

  6. svn怎么切换用户

    在使用svn客户端经常会保存用户及密码,方便下次直接登录,有时需要使用别的账号登录,这时该怎么切换呢? 工具/原料 苹果6 小米4 方法/步骤   在使用svn更新或提交数据时需要输入用户名和密码,在 ...

  7. 从 JavaScript 到 TypeScript

    本文首发在我的个人博客:http://muyunyun.cn/posts/66a54fc2/ 文中的案例代码已经上传到 TypeScript TypeScript 并不是一个完全新的语言, 它是 Ja ...

  8. 微信小程序的开发环境搭建(Windows版本)

    前言: 小程序是指微信公众平台小程序,小程序可以帮助开发者快速的开发小程序,小程序可以在微信内被便捷地获取和传播:是一种不需要下载安装即可使用的应用小程序,和原有的三种公众号是并行的体系.2017年1 ...

  9. H5仿微信界面教程(一)

    前言 先来张图,仿微信界面,界面如下,并不完全一模一样,只能说有些类似,希望大家见谅. 1 用到的知识点 jQuery WeUI 是WeUI的一个jQuery实现版本,除了实现了官方插件之外,它还提供 ...

  10. (转载)Oracle10g 数据泵导出命令 expdp 使用总结(二)

    原文链接:http://hi.baidu.com/edeed/item/2c454cff5c559f773d198b94 Oracle10g 数据泵导出命令 expdp 使用总结(一) 1.1.2 e ...