2011-06-23 46 views
5

我正在用PHP開發一個RESTful Web應用程序。我所得到的是:如何讓IIS6識別pathinfo路線而不是返回「404 Undescribed」錯誤?

  1. 測試服務器上的Windows 7/2.2的Apache/PHP 5.2.9(mod_php的)
  2. 生產服務器上,在Windows Server 2003/IIS6/PHP 5.2 1.4(php5isapi.dll)

當測試環境有沒有問題,生產服務器無法發送與任何PATHINFO REST風格的請求(即,例如像/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是代理的名稱。

我搜索了一下,看起來既不是,也不是網絡的其他人可以給這個問題的實際解決方案。任何線索?

由於生產服務器需要跟上,重新安裝PHP和/或IIS是而不是一個選項。我可以做的是修改IIS/PHP配置,並重新啓動IIS。

由於提前,

保羅

回答

3

@hakre貼一個很好的答案,但它是解決這個問題,我簡要彙報疼痛的時間保存到他人另一件事...

我被解決掉問題:

  • 編輯php.ini在生產服務器上,註釋掉doc_root=...線;
  • 重新啓動IIS;
  • 在生產服務器上啓動services.msc,重新啓動「萬維網發佈服務」;

現在,所有頁面都正常工作,報告PATH_INFO正確。

無論如何感謝您的答案!

如果有人在意,this page照亮了我。

1

嘗試使用的ISAPI_Rewrite(http://www.isapirewrite.com/)重寫支持

+0

正如我在我的問題所述,我不能在生產服務器上安裝額外的庫。此外,你提到的是商業產品,所以這不是一個可行的解決方案。 –

+0

因此,請嘗試配置404文檔並使每個人都請求該文件並在該文件中進行處理。 – hanguofeng

2

取消選中確認文件是否存在入住框。

這是在Internet信息服務管理器一個選項,您可以在網站屬性主目錄配置爲.php應用程序映射找到。

編輯相關網站的映射並禁用文件存在檢查。然後pathinfo應該按預期工作。

More Info

+0

感謝您的回答,我嘗試這樣做,重新啓動IIS,也取消選中「緩存ISAPI擴展」,再次重新啓動,但沒有任何改變。我甚至無法得到一個簡單的頁面,說/phpinfo.php/pathinfo_test被識別。相同的錯誤:404未描述的標題。 –