Zend Framework 1.5.1 与 Windows2003 下 IIS6.0 的集成

一般资料只介绍 Zend Framework 与 Apache 通过 .htaccess 配置文件进行集成,实现访问的定向和分发。这是因为 apache 通过装载 mod_rewrite 模块实现了 URL Rewrite 技术,将所有的请求转发到 index.php。

但由于 IIS 不支持基于 .htaccess 配置的 URL Rewrite,因此 Zend Framework 无法简单地在 IIS 下运行。但是,由于 IIS 支持基于 HttpModule 的 URL Rewrite,因此通过别的途径,是可以让 Zend Framework 在 IIS上跑的。我利用第三方软件 ISAPI_Rewrite 实现了这个功能,测试了一下控制器和视图,可以运行,更深入的应用还没有测试,大家可以继续探讨。

Zend Framework 版本 1.5.1,PHP 版本 5.2.5,在 Windows Server 2003 R2(SP3) 的 IIS6.0 下测试。PHP.ini 的 include_path 已经包含至 Zend Framework 的 library 路径。

本人的测试文件夹为:

D:\MyPHP5\ZF_mydemo,里面包含 App 和 www 2个文件夹。
D:\MyPHP5\ZF_mydemo\App 下包含 controllers、DB、models、views 文件夹。
D:\MyPHP5\ZF_mydemo\www 用于保存 index.php 文件,所有的请求转发到这里。该文件内容为:

<?php
error_reporting(E_ALL|E_STRICT);
date_default_timezone_set('Asia/Shanghai');
//由于 php.ini 配置了Zend Framework 的库路径,这里省略 set_include_path 语句。
include "Zend/Loader.php";
Zend_Loader::registerAutoload(); //可以用以上(1)和(2)任一个代替
$fc = Zend_Controller_Front::getInstance();
$fc->setControllerDirectory('../App/controllers');
$fc->throwExceptions(true);
$fc->setParam('noViewRenderer', true);
$fc->setParam('noErrorHandler', false);
$fc->dispatch(); ?>

我的访问地址为 http://[url],指向物理文件夹 D:\MyPHP5。测试地址是:http://[url]/zf_mydemo/www

需要配置 ISAPI_Rewrite 文件夹下的 httpd.ini 文件(默认一般在 C:\Program Files\Helicon\ISAPI_Rewrite),加2条规则: RewriteRule /zf_mydemo/www/.* /zf_mydemo/www/index.php RewriteRule /zf_mydemo/www /zf_mydemo/www/index.php

第二条规则是保证访问 http://[url]/zf_mydemo/www (不到斜杠)时不出错。

这样我在浏览器里打开 http://[url]/zf_mydemo/www/example,就访问到了 D:\MyPHP5\ZF_mydemo\App\controllers 下的文件 exampleController.php。

附注:

费了这么大的神探索这个问题,让 ZF 和 IIS 结亲,总有点拉郎配的感觉!其实我个人是不喜欢也不赞成在 IIS 上跑 ZF 的,而 Zend 公司似乎也不愿意。所以我们在 Zend 的文档里和互联网上很少能找到在 IIS 上运行 ZF 的资料,操这份闲心的都是一些爱好者和像我这样的好事者。毕竟 Lamp 才是 PHP 的黄金搭档,作为技术,我们要让它们用在最合适的环境下。
但是作为技术人员,有时我真的无法压制自己的好奇心,在尝试中,我体验到了探险家的乐趣:把看似可以实现的事情变成已然实现的结果。这就是技术人员的好奇、执着(偏执?)、固执己见吧?

张庆(网眼) 2008-5-5

Zend Framework 入门教程(简体中文1.5.x版)(2008/06/17更新) Zend Framework 入门教程(简体中文版) Getting Started With the Zend Framework Author:Rob Allen, www.akrabat.com Document Revision:1.5.2 Copyright? 2006, 2008 翻 译:Altair (eniac2008 at 163 dot com) 中文版本号:v0.03 【翻译说明】这是Zend Framework的非常经典的入门教程,它的原作者Rob Allen是《Zend Framework In Action》一书的作者。在翻译这个版本之前,只知道Jason Qi 翻译的0.9版(实际内容是关于Zend Frame 0.6版本的)。因为自0.9版以来Zend Framework已经有了很大的变化,教程也有了比较大的改变。因此才决定重新翻译一次。翻译完成后才发现Jason Qi 翻译的最新版本已经是1.4.3了。但毕竟已经翻译完成,而且Jason翻译的还不是最新版本,因此还是决定将这个版本的翻译发布出来。因此,实际上这个翻译版本是根据英文版v1.5.2完全重新翻译的。 这个版本是比较初步的一个版本,里面还有不少翻译错误,我会一直对其进行修订。如果你发现文中有一些错误,很有可能是我在翻译的时候造成的,欢迎大家将发现的错误及时通知我,以便我能及时更新,以保证此中文版本跟原文一样的高品质。Thanks! 本教程的英文版原文链接:http://akrabat.com/zend-framework-tutorial/ Jason Qi 翻译的本教程的早期版本可以在这里找到: http://zft.backupdiy.com/download/ 本教程首发: http://bbs.phpchina.com, http://www.phpatoz.com (Under construction) History: 2008/05/30 v0.01 First Release. 2008/05/30 v0.02 Bug Fix 2008/06/01 v0.03 Bug Fix
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值