IIS7.0通过FastCGI方式运行PHP遇到的一些问题及解决方法-阿里云开发者社区

开发者社区> 不能超过五> 正文

IIS7.0通过FastCGI方式运行PHP遇到的一些问题及解决方法

简介: 经过二天的努力,终于把PHP网站从Apache迁移到IIS7上面,迁移过程中遇到一些问题,在这里和大家分享一下。 至今仍有一个问题,希望大家帮忙指点。   本文不会涉及如下内容: IIS7的安装 FastCGI For IIS7.
+关注继续查看

经过二天的努力,终于把PHP网站从Apache迁移到IIS7上面,迁移过程中遇到一些问题,在这里和大家分享一下。 至今仍有一个问题,希望大家帮忙指点。

 

本文不会涉及如下内容:

  1. IIS7的安装
  2. FastCGI For IIS7.0的安装和配置
  3. UrlScan的安装和配置
  4. 如何配置IIS7.0来运行PHP    
  5. 为什么要把PHP网站从Apache迁移到IIS7上面

 

如果您想了解上面的内容,你可以到http://www.iis.nethttp://www.php.net网站查看相关内容,在搜索引擎中也能找到很多参考资料。

 

在IIS7.0上以FastCGI方式配置好PHP运行环境,测试可以正常运行PHP程序后,将PHP程序部署上去,导入程序原来的数据和配置信息。由于Apache服务器在占用80端口,所以先停止Apache并设置IIS7.0使用80端口运行网站。 PHP程序终于在IIS7.0上跑起来了,看起来还不错,哈哈……

 

不过好像高兴的太早,很快就有问题出来啦L

 

一、某些图片无法显示

我的同事发现有不少图片无法显示。我感觉很奇怪,既然在Apache上没有问题,迁移到IIS7.0后,域名和文件路径均没有变化,不应该出现问题呀。我马上开始确认和排查问题,首先,根据同事的提供信息查看页面,果然很多图片无法显示;然后,我就随机看了网站中的图片,发现有些图片可以正常显示,而且不能正常显示的图片,都是路径中包含了日文或中文字符,这是为什么呢???

 

疯狂的折腾了一通之后,还是没有头绪,没有办法只能重新再浏览器中打开一张图片,希望可以从错误信息中找到一些有用的东西,只有404 File Not Found错误,没有其他有价值的参考信息。这时候我远程连接到服务器,在服务器上访问,哈哈……错误信息就比较详细了,如下图:

 img_3cefb914772a9606e27a47dfcf344c84.png

OMG,是UrlScan拒绝了该请求,在UrlScan的日志目录C:\Windows\System32\inetsrv\urlscan\logs\中打开一个日志文件,发现很多类似 "Rejected URL+contains+high+bit+character URL"的记录,这又是为什么呢???原来IIS7.0上安装UrlScan后,所有的请求都会经过aspnet_filter和Request Filtering的过滤,Request Filtering的过滤规则就在UrlScan的安装目录C:\Windows\System32\inetsrv\urlscan\UrlScan.ini文件中,其中有这样一个规则AllowHighBitCharacters=0,IIS官网的解释是: This feature either allows or rejects all requests to IIS 7 that contain non-ASCII characters and logs the error code 404.12,允许或拒绝所有包含非ASCII字符的请求并在日志中记录404.12错误,该规则默认为0,也就拒绝包含高位字符的请求 URL。我们将AllowHighBitCharacters的值改为1,图片终于可以正常显示了。

 

关于AllowHighBitCharacters的配置,UrlScan.ini中配置的规则是整个机器级别的,IIS7.0上的所有网站都适用。根据IIS官网的说明,还可以在网站级别配置。在IIS管理器中,你可以在左侧选择指定的网站后,在中间的功能区域选择"Request Filtering",双击该功能,在右侧的操作区域中点击"Edit Feature Settings"后,选中或者取消"allow high-bit characters"项即可;也可以直接在网站的web.config中添加如下内容:

img_95d17be91eaa44437015766d1138e4e1.png

但是,根据我的测试,如果在UrlScan.ini中配置AllowHighBitCharacters=0,那么在网站级别按照上面在web.config中配置AllowHighBitCharacters="true",根本就不起作用,IIS7.0依然拒绝处理路径中含有非ASCII字符的请求;如果在UrlScan.ini中配置AllowHighBitCharacters=1,那么在网站级别按照上面在web.config中配置AllowHighBitCharacters="true|false"就会起作用。

这又是为什么呢?希望有高手指点一下。

二、很多基于JQuery的功能失效了

日期选择框失效了,弹出层失效了,输入验证失效了……可是,这又是为什么呢? 

 

还好吃一堑长一智,这次直接去看UrlScan的日志,发现加载JS的记录很多都是" Rejected URL+contains+dot+in+path URL",然后就去看UrlScan.ini中的配置,在AllowHighBitCharacters下面有一个AllowDotInPath的配置,默认值也是0,也就是不允许在Url中出现除了扩展名之外的点字符[.],大家知道JQuery库和很多扩展插件的文件名称中都有点字符[.],将AllowDotInPath的值修改为1,打开网站就没有问题了,哈哈:)

注意:UrlScan.ini中关于AllowDotInPath的说明,除了测试外不建议将其设置为1,因为如果设置1,基于扩展名的检查将不在可信。

 

这二个问题解决后,从Apache迁移PHP程序到IIS7.0也算完成了。

 

最后,还有一个问题,就是我们的php网站在IIS7.0上运行,访问的时候,偶尔会有页面空白的情况发生,等一段时间就好了,直接回收或者重启进程池后也会好,不知道是什么问题?希望有了解此问题的园友,不吝赐教,给些指点,先在此谢过!

说明:这个问题已经解决,具体的操作就是减小http连接时间,同时增加应用程序池中的最大连接数和并发连接数。 

参考:

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
9497 0
关于安卓开发通过Toast显示消息提示框
Toast用于在屏幕中显示一个提示信息栏,该消息栏没有任何控制按钮,并且不会获得焦点,经过一定时间后自动消失。 作用:用于显示一些快速提示信息 有两种方式可以显示提示信息框 一: 调用Toast类的make Text()方法创建一个名称为toast(自定义)的Toast对象 关键代码 1 Toast toast = Toast.
854 0
Search 通过 Kibana—Elastic Stack 实战手册
在 TO B 行业,对商品的搜索展示,是有一定业务要求的,例如:存在合作关系的买家和供应商才能看到供应商店铺的商品,不存在合作关系的买家则不展示商品。另外,有些商品对客户甲展示一种价格,对客户乙则展示另外一种价格,从而区分不同的会员、分组对商品价格的区别。
183 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
13186 0
【Spark Summit East 2017】通过Simplicity进行扩展:如何使3亿用户的聊天应用的数据工程量减少70%
本讲义出自Joel Cumming在Spark Summit East 2017上的演讲,主要分享了使得3亿用户的聊天应用的数据工程量减少70%的8件事情,Joel Cumming与他的团队将数据栈从系统和进程的复杂结合体带入到可扩展、简单并且健壮的基于Spark和Databricks平台上,该平台将会使任何一家公司丢可以超级简单地使用数据。
1368 0
阿里云 Elasticsearch 通过 Beats 实现对 Redis 可视化监控
Redis 以其易用性的特性而被广泛使用,但管理Redis服务器或集群同样带来诸多挑战——如磁盘故障或内存不足,都可能导致失败,而采集、分析、监控 Redis 日志,可以更好的帮助我们管理Redis服务器。
1332 0
IIS7.0通过FastCGI方式运行PHP遇到的一些问题及解决方法
经过二天的努力,终于把PHP网站从Apache迁移到IIS7上面,迁移过程中遇到一些问题,在这里和大家分享一下。 至今仍有一个问题,希望大家帮忙指点。   本文不会涉及如下内容: IIS7的安装 FastCGI For IIS7.
1070 0
+关注
不能超过五
主要关注分布式系统、项目管理、教育行业互联网应用研发和运维
22
文章
2
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载