Zend Framework 1.5.1 与 IIS6.0 的集成

本文涉及的产品
函数计算FC,每月15万CU 3个月
简介:

   一般资料只介绍 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 的黄金搭档,作为技术,我们要让它们用在最合适的环境下。

    但是作为技术人员,有时我真的无法压制自己的好奇心,在尝试中,我体验到了探险家的乐趣:把看似可以实现的事情变成已然实现的结果。 这就是技术人员的好奇、执着(偏执?)、固执己见吧?









本文转自网眼51CTO博客,原文链接:http://blog.51cto.com/itwatch/286482,如需转载请自行联系原作者

相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
前端开发 jenkins Java
Jenkins流水线远程部署.NE TCore/Framework到IIS
Jenkins流水线远程部署.NE TCore/Framework到IIS
423 0
Jenkins流水线远程部署.NE TCore/Framework到IIS
|
开发框架 前端开发 jenkins
Windows+.Net Framework+svn+IIS在Jenkins上的自动化部署入门
主要介绍在jenkins如何安装SVN和MSBuild。
359 0
Windows+.Net Framework+svn+IIS在Jenkins上的自动化部署入门
|
Java 应用服务中间件 BI
皕杰报表(tomcat下部署)与IIS集成
配置tomcat的环境变量,和上面配置java一样的配置方式,变量值为当前的tomcat所在文件夹 百度搜索下载isapi_redirect 这个程序集,我下载的是isapi_redirect-1.2.31版本,别的版本也可以,将它放在安装好的tomcat文件夹下的conf的文件夹里 完成以上准备工作,重点来了。
1396 0
|
jenkins 机器人 Java
Robot Framework+Jenkins构建集成环境的搭建
为什么我们要引入RF?其实最初我们引入RF是为了能够快速的开展自动化验收测试,为敏捷保驾护航。这其中有个重要的工具Jenkins,这次就来介绍一下RF如何快速便捷的结合Jenkins这一利器在windows上进行自动化测试(linux我没装机器,大体步骤差不多,度娘应该有)。
1749 0