2011-06-23 23 views
5

Tôi đang phát triển một ứng dụng web RESTful trong PHP. Những gì tôi đã có là:Làm cách nào để IIS6 nhận ra các tuyến đường dẫn thay vì trả về lỗi "404 Chưa được mô tả"?

  1. trên máy chủ thử nghiệm , Windows 7/Apache 2.2/PHP 5.2.9 (mod_php)
  2. về sản xuất máy chủ , Windows Server 2003/IIS6/PHP 5.2 .4 (php5isapi.dll)

trong khi môi trường thử nghiệm đã có không có vấn đề, máy chủ sản xuất không gửi bất kỳ yêu cầu RESTful với pathinfo (ví dụ, các trang như ví dụ /mypath/app.php/controller/id, nơi kịch bản xử lý là /mypath/app.php) và cung cấp cho một trang trống đẹp wi th thông điệp:

No input file specified. 

Sử dụng firebug, tôi có thể nhìn thấy các tiêu đề phản ứng là:

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 

đâu XXXXX là tên của proxy.

Tôi googled xung quanh và có vẻ như không phải SO cũng như phần còn lại của web có thể cung cấp các giải pháp thiết thực cho vấn đề này. Bất kỳ đầu mối?

Vì máy chủ sản xuất cần theo kịp, cài đặt lại PHP và/hoặc IIS là không phải là một tùy chọn. Những gì tôi có thể làm là thay đổi cấu hình IIS/PHP, và khởi động lại IIS.

Cảm ơn trước,

Paolo

Trả lời

3

@hakre đăng tải một câu trả lời tốt, nhưng nó cũng là một điều mà giải quyết vấn đề này, mà tôi báo cáo vắn tắt để tiết kiệm giờ đau cho người khác ...

Tôi đã thoát khỏi những vấn đề bằng cách:

  • chỉnh sửa php.ini trên máy chủ sản xuất, cho ý kiến ​​ra dòng doc_root=...;
  • khởi động lại IIS;
  • khởi chạy services.msc trên máy chủ sản xuất, khởi động lại "World Wide Web Publishing Service";

bây giờ, tất cả các trang chỉ hoạt động tốt khi báo cáo PATH_INFO chính xác.

Cảm ơn câu trả lời!

Nếu có ai quan tâm, this page chiếu sáng tôi.

1

thử viết lại hỗ trợ sử dụng ISAPI_Rewrite (http://www.isapirewrite.com/)

+0

Như tôi đã nêu trong câu hỏi của mình, tôi không thể cài đặt thêm thư viện trên máy chủ sản xuất. Hơn nữa, một trong những bạn đề cập đến là một sản phẩm thương mại vì vậy đây không phải là một giải pháp khả thi. –

+0

vì vậy, hãy thử định cấu hình tài liệu 404 và làm cho mọi người yêu cầu tệp đó và xử lý trong tệp đó. – hanguofeng

2

Un-kiểm tra Xác nhận tập tin tồn tại Trả phòng cái hộp.

Đó là một lựa chọn trong Internet Information Services Manager bạn có thể tìm thấy trong Sites Web Thuộc tính Home Directory Cấu hình cho Mapping .phpApplication.

Chỉnh sửa ánh xạ cho trang web được đề cập và tắt kiểm tra tính tồn tại của tệp. Sau đó, pathinfo sẽ hoạt động như mong đợi.

More Info

+0

Cảm ơn câu trả lời, tôi đã thử làm như vậy, khởi động lại IIS, cũng không được chọn "Cache ISAPI extensions", khởi động lại lần nữa, nhưng không có gì thay đổi. Tôi thậm chí không thể có được một trang đơn giản, nói /phpinfo.php/pathinfo_test để được công nhận. Lỗi tương tự: 404 Tiêu đề chưa được mô tả. –