如何让IIS6识别pathinfo路由而不是返回“404 Undescribed”错误?

时间:2011-06-23 15:08:55

标签: php iis-6 restful-url pathinfo

我正在用PHP开发一个RESTful Web应用程序。我得到的是:

    测试服务器上,Windows 7 / Apache 2.2 / PHP 5.2.9(mod_php) 生产服务器上的
  1. ,Windows Server 2003 / IIS6 / PHP 5.2.4(php5isapi.dll)
  2. 虽然测试环境没有问题,但是生产服务器无法使用pathinfo发送任何RESTful请求(例如,/mypath/app.php/controller/id这样的页面,其处理脚本为/mypath/app.php)并且提供了一个很好的带有消息的空白页:

    No input file specified. 
    

    使用firebug,我可以看到响应头是:

    HTTP/1.1 404 Undescribed
    Proxy-Connection: close
    Connection: close
    Via: 1.1 XXXXX
    Date: Thu, 23 Jun 2011 14:51:18 GMT
    Content-Type: text/html
    Server: Microsoft-IIS/6.0
    X-Powered-By: ASP.NET, PHP/5.2.4
    

    其中XXXXX是代理的名称。

    我用Google搜索,似乎SO和其他网络都无法为这个问题提供切实可行的解决方案。任何线索?

    由于生产服务器需要跟上,重新安装PHP和/或IIS 是一个选项。我能做的是修改IIS / PHP配置,然后重新启动IIS。

    提前致谢,

3 个答案:

答案 0 :(得分:3)

@hakre发布了一个很好的答案,但这是解决这个问题的另一个问题,我简要报告这个问题是为了给别人节省数小时的痛苦......

我通过以下方式解决了这个问题:

  • 在生产服务器上修改php.ini,注释掉doc_root=...行;
  • 重新启动IIS;
  • 在生产服务器上启动services.msc,重新启动“World Wide Web Publishing Service”;

现在,所有网页都能正常报告PATH_INFO

无论如何,谢谢你的答案!

如果有人关心,this page照亮了我。

答案 1 :(得分:2)

取消选中验证文件是否存在复选框。

您可以在网站属性主目录配置中找到 Internet信息服务管理器中的选项{{1} } 应用程序映射

编辑相关网站的映射并禁用文件存在检查。然后pathinfo应该按预期工作。

More Info

答案 2 :(得分:1)

尝试使用ISAPI_REWRITE(http://www.isapirewrite.com/)重写支持