5

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

  1. 测试服务器上,Windows 7 / Apache 2.2 / PHP 5.2.9 (mod_php)
  2. 生产服务器上,Windows Server 2003 / IIS6 / PHP 5.2.4 (php5isapi.dll)

虽然测试环境没有问题,但生产服务器无法发送任何带有 pathinfo 的 RESTful 请求(即,像 eg 的页面/mypath/app.php/controller/id,处理脚本所在的位置/mypath/app.php)并给出一个漂亮的空白页面,其中包含以下消息:

No input file specified. 

使用萤火虫,我可以看到响应标头是:

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代理的名称在哪里。

我四处搜索,似乎 SO 和网络的其他部分都无法为这个问题提供切实可行的解决方案。有什么线索吗?

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

提前致谢,

保罗

4

3 回答 3

3

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

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

  • 在生产服务器上编辑php.ini,注释掉该doc_root=...行;
  • 重新启动 IIS;
  • 在生产服务器上启动services.msc,重新启动“万维网发布服务”;

现在,所有页面都可以正常报告PATH_INFO

无论如何,感谢您的回答!

如果有人在乎,这个页面照亮了我。

于 2011-06-28T12:54:30.887 回答
2

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

这是Internet 信息服务管理器中的一个选项,您可以在应用程序映射的网站属性主目录配置中找到。.php

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

更多信息

于 2011-06-27T23:45:16.013 回答
1

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

于 2011-06-23T15:25:36.977 回答