在IIS搭建基于CodeIgniter的PHP网站

配置IIS下PHP环境:
下面步骤以php安装在D:/Program Files/php目录为例
1)复制php安装目录下php.ini到C:/WINDOWS/;
2)再复制php5ts.dll和libmysql.dll到WINDOWS/system32/中;

注:这两步很重要,我一开始以为这属于安装php的步骤,而我的机器已装有php,所以我就直接跳过了这两步操作,结果一运行看到的页面是一片空白。
3)添加一个php后缀:

打开IIS,点击"Web服务扩展"-->"添加一个新的Web服务扩展",在"扩展名"中输入"php",点击"添加",指向"D:/Program Files/php/php5isapi.dll" ,把"设置扩展状态为运行"勾上,点击"确定"。
4)添加ISAPI筛选器:

右键要配置的网站-->"属性"-->选择"ISAPI筛选器"-->"添加", "筛选器名称"中输入"php" ,可执行文件为"D:/Program Files/php/php5isapi.dll",点击"确定"。
5)添加扩展名映射:

选择"主目录"-->点击"配置"-->"添加", 可执行文件路径为"D:/Program Files/php/php5isapi.dll",扩展名为".php"-->"确定"。
6)添加默认内容页:

再选择"文档"-->点击"添加",输入"index.php"-->"确定",并且上移到最顶,点击"应用"-->"确定"。

重启IIS服务。

相关问题解决方案:
1在IIS下配置PHP高版本5.28/5.2.9可能出现错误信息:"the specified module could not be found":

这是因为IIS应用程序作php映射时发现在可执行文件路径两边有双引号,应该将"D:/Program Files/php/php5isapi.dll"手动改成D:/Progra~1/php/php5isapi.dll(将Windows路径换为DOS路径),重启IIS,问题解决!
2)
页面出现"……failed to open stream……Failed opening required……"错误信息:

从网上了解到这个问题是目录权限问题导致的,我的网站根目录在E:/shop下。于是我在shop目录下建立一个www目录,再将www目录作为网站根目录。分别给shop和www目录分配Everyone读权限。重启IIS服务,刷新页面,问题解决!
问题关键,网站根目录的上级目录的权限要和网站根目录的权限一样
3)
页面出现"Internal Server Error"错误信息:

关于这个问题,网上有人提出:"检查PHP网站目录下是否有.htaccess文件存在,此文件会干扰程序的正常运行,如果有此文件建议删除或改名"。这个做法是不可取的,因为.htaccess文件可以做大量范围的事情。包括:设置默认首页文件、自定义错误页面、重定向页面、实现PR劫持、屏蔽特定的用户IP地址、停止目录表、文件夹密码保护、变更文件扩展名、防盗链等等。

下面是我的网站下.htaccess文件的内容:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f #不是文件或不存在就进行RewriteRule
RewriteCond %{REQUEST_FILENAME} !-d #不是目录或不存在
RewriteCond $1 !^(index/.php|images|robots/.txt|css|js) [nocase] #nocase(忽略大小写)
RewriteRule ^(.*)$ index.php/$1 [L]

注:我的index.php的同级目录下还有css和js文件夹,所以加到了过滤条件中。

在.htaccess文件中定义了url重写规则,因此想到可能是未开启mod_rewrite模块造成的。摸索出以下两种解决方案:

a)开启Apache的mod_rewrite模块;

打开apache的配置文件httpd.conf :
找到#LoadModule rewrite_module modules/mod_rewrite.so,去掉#号。
找到
<Directory "Apache的文档根目录">

Options Indexes FollowSymLinks
AllowOverride None
Order Allow,Deny
Allow from all

</Directory>
AllowOverride None改为AllowOverride All
注:当AllowOverrid设置为None时,.htaccess 文件将被完全忽略,所以要改为All。

b)在.htaccess 文件重写规则处加上IfModule指令(它是根据指定的模块是否启用而决定是否生效的指令),如下:

<IfModule mod_rewrite.c>

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond $1 !^(index/.php|images|robots/.txt|css|js) [nocase]
RewriteRule ^(.*)$ index.php/$1 [L]

</IfModule>

如果你确定不会用到Apacheurl重写功能,也可以注释或者直接删掉这几行
最后别忘了重启Apache!

4)将CodeIgniter的URL中index.php隐藏
     以Apache作为Web服务器,需开启mod_rewrite模块的支持;以IIS作为Web服务器,则要额外安装ISAPI_Rewrite扩展。
     Apache下解决方法

1)开启Apache的mod_rewrite模块(同上)
2)编写.htaccess文件,放在index.php同级目录下

RewriteEngine On
RewriteCond $1 !^(index/.php|images|robots/.txt) [nocase]
RewriteRule ^(.*)$ index.php/$1 [L]

3) 修改application/config中的config.php文件:

改$config['index_page']="index.php"为$config['index_page']="";

IIS下解决方法

1)安装ISAPI_Rewrite 3.1,下载Lite版(精简版)

Lite版的缺点是不支持分站,一个IIS只能运行一个Global级的httpd.conf
下载地址:http://www.helicontech.com/download/isapi_rewrite/ISAPI_Rewrite3_0060_Lite.msi

2)配置URL重写规则(对应Apache下.htaccess文件中的重写规则)

httpd.conf文件内容:
# Helicon ISAPI_Rewrite configuration file
# Version 3.1.0.60
#括号中I表示忽略大小写
RewriteRule (index/.php|images|robots/.txt)/(.*) $0 [I,L]
RewriteRule ^(.*)$ index.php/$1 [I,L]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值