ThinkPHP项目发布到IIS

最近在开发微信服务号时碰到一个问题:阿里ECS的80端口被IIS占用,而微信服务号中使用JSSDK必须设置安全域名,但是这个安全域名不能带有端口信息。这就产生冲突了。经过一番(URL隐式转发、添加CNAME解析)折腾未果,后来想到干脆把项目从原先的Apache服务器移植到IIS中,在ECS自带的IIS上做子域名绑定是很方便的,又是一番折腾,终于搞定。于是记录下自己踩的坑。

环境:windows server 2007 32bit、IIS7.0、PHP5.6.3

安装PHP

1、去PHP官网选择一个NTS版本下载;

2、解压后将php-5.6.30-nts-Win32-VC11-x86文件夹根目录下的


二选一

php.ini-program或php.ini-production改成php.ini。并在php.ini中添加如下配置:

extension_dir = "E:\mingyong\php\ext" #设置php模块路径
date.timezone = PRC #设置时区为中国时区
register_globals = On #开启GET数据调用,PHP5.6以上的版本已废弃,请设置成OFF
short_open_tag = On #php支持短标签
cgi.force_redirect = 0 #开启以CGI方式运行php
fastcgi.impersonate = 1;
cgi.rfc2616_headers = 1
cgi.fix_pathinfo=1

3、此时运行php.exe不报错即为安装成功,如果报MSVCR110丢失,需要安装vc11 - Microsoft Visual C++ 2012 Redistribution

配置IIS

如果还没有IIS,要在win server的服务器管理器中添加web服务(IIS)角色。

1、在服务器管理器中选添加角色功能,选中winRM IIS 扩展、CGI安装。我这里全选了。

ThinkPHP项目发布到IIS_第1张图片
添加角色

2、IIS中添加项目(主机名要和子域名对应,端口为80,IP地址就是ECS的固定IP),并把ThinkPHP项目copy到对应的物理路劲下

ThinkPHP项目发布到IIS_第2张图片
我添加shtx的项目

3、选择处理程序映射

ThinkPHP项目发布到IIS_第3张图片
处理映射程序

添加如图所示的 FastCGI模块映射
ThinkPHP项目发布到IIS_第4张图片
添加模块映射

4、在fastCGI setting中(如果此时没有fastCGI选项,请安装Administration Pack或者升级到IIS7.5)

ThinkPHP项目发布到IIS_第5张图片
fastCGI Settings

编辑FastCGI,添加如图所示的环境变量
ThinkPHP项目发布到IIS_第6张图片
EnvironmentValue

ThinkPHP项目发布到IIS_第7张图片
EnvironmentValue

url重写

经过以上两步,项目应该能正常访问了,但是由于是ThinkPHP开发的项目,会遇到url重写的问题,此时需要在项目根目录下的web.config中添加重写规则,添加后的样子如下:


    
        
        
            
                
                    
                    
                

                
                    
                    
                        
                        
                        
                    
                    
                
            
        
        
            
            
            
            
        
    

至此,PHP就可以发布到IIS了。

你可能感兴趣的:(ThinkPHP项目发布到IIS)