Windows Server 2008 配置IIS+PHP

问题:

最近要上线一个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,还是会遇到这个问题。

时间: 2024-08-10 11:57:00

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

VMware windows server 2008配置dns服务

Windows Server 2008配置 DNS服务 1,打开服务管理器,安装dns服务 2,配置dns服务 进入到刚刚的区域里面建主机 注意这样实际去解析的域名是www.test.com.main 反向查找区域 选择默认dns服务后测试 测试配置成功. 原文地址:https://www.cnblogs.com/Q1143316492/p/10229036.html

windows server 2008 r2 IIS PHP

在Windows server 2008 r2 的IIS(7.5)中搭建PHP运行环境: 一:安装IIS服务器(没有装IIS) 1.我的电脑>>右键>>管理(Manage) 2.点击(Add Roles) 这个地方我是已经安装过(不会可以百度一下有很多) 3.附(如果安装过IIS) 点击 "Add Role Services" 然后选着CGI模块安装 二:下载安装配置IIS上的PHP环境 1.下载PHP,官网地址:http://windows.php.net/d

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

环境:Windows Server 2012, IIS 8, Asp.Net Core 1.1. 不少人第一次在IIS中部署Asp.Net Core App的人都会遇到问题,会发现原来的部署方式无法运行Asp.Net Core App程序.过去无论是原始的Asp程序还是后来的Asp.Net程序,在IIS中的部署方式都没太大变化,仅需指向程序目录,然后设定虚拟目录,最后做一些参数配置.Asp.Net Core App为了做到跨平台,自带了一个轻量级的Web Server - Kestrel,那么要

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

工作需要,搞起AD域来,具体配置如下: 配置环境 Windows版本:Windows Server 2008 R2 Enterprise Service Pack 1 系统类型: 64 位操作系统 配置DNS服务器 这一步不是必须的,在安装Active Directory 域服务时可以同时装上DNS服务器. Active Directory 域服务安装向导-->其它域控制服务器,勾上DNS服务器也有同样效果, 鉴于服务器配置容易出现一些未知小错误,还是提前安装上比较省心^_^! 开始菜单-->

部署.net Core 到 Windows server 2008 r2 IIs

1. 将项目发布 2.iis 新建网站,设置 3 安装windows  server  hosting 4 关于报错 1.下载sdk https://www.microsoft.com/net/learn/get-started/windows 2.下载 .NET Core Windows Server Hosting https://www.nuget.org/packages/Microsoft.AspNetCore.Hosting.WindowsServices/ 需要验证 dotnet

windows server 2008 r2 IIS服务403-禁止访问访问被拒绝

初次使用win 2008 r2配置IIS服务 点击打开网站会出现这种情况 这种情况就是并没有配置默认文档 直接打开网址 只需要配置一下默认文档即可 将自己写的.html文件添加在这里即可. 另外启用32位应用程序 设为 TRUE :https://zhidao.baidu.com/question/285491112.html 原文地址:https://www.cnblogs.com/forforever/p/12584057.html

Windows Server 2008配置Jmail发送邮件

jmail是一个32位的邮件发送程序,在Windows 2008上注册后你会发现无法使用.注册组件可以通过asp.net探针来检查. 比如现在我的网站www.abc.com需要通过asp.net的jmail插件来发送邮件: 打开应用IIS管理器,打开应用程序池,找到www.abc.com,右击"高级设置" 将"启用32位应用程序"改为"true" 复制组件以及注册组件 组件位置 C:\Program Files (x86)\Dimac\w3JMa

Windows Server 2008 中iis反向代理设置

1.安装 IIS(Windows专业版自带,如果是server版系统,需要通过功能管理器安装(无需下载)) urlrewrite插件,https://www.iis.net/downloads/microsoft/url-rewrite ARR插件(Application Request Routing)https://www.iis.net/downloads/microsoft/application-request-routing.如果只转发到IIS内网站,则不需要ARR 上面两个插件均可

Windows Server 2008配置Network Load Balancing(服务群集)

最近配置SharePoint 2013 WFE 时,客户提到要让多台WFE能load balance,于是研究了下Network Load Balancing. 当把一台服务器(包括Web服务器.FTP服务器或者流媒体服务器等等)放入网络中之后,随着客户端数量的不断增加,人们往往需要功能更强大.处理速度更快的服务器.为了解决这个问题,如果将原有的服务器替换成功能更强大.处理速度更快的服务器显然并不是值得称道的办法.但是如果能把新服务器添加到原有服务器的处理能力基础上而不是替换它,这种方案毫无疑问