Tôi có một trang web lưu trữ và tôi đang gặp sự cố khi cấu hình Joomla (chạy Joomla + php + mySQL trên máy chủ IIS7 + win 2008). Tôi có một cấu hình tương tự đang chạy trên một máy tính cục bộ (Joomla + php + mySQL trên IIS7 + vista x64), vì vậy tôi ít nhất có thể làm theo các hướng dẫn cho thấy trong các hướng dẫn khác nhau về cách thiết lập điều này.Làm thế nào để biết chắc chắn nếu FastCGI đang được sử dụng để chạy tập lệnh php
Triệu chứng này với trang web được lưu trữ là tôi không thể bật bất kỳ cài đặt SEO nào trong Joomla (thậm chí không phải cài đặt đầu tiên, "URL thân thiện với công cụ tìm kiếm"). Tôi nhận được 404 (không tìm thấy tệp) hoặc URL xuất hiện được viết lại chính xác nhưng nó luôn là nội dung của trang chủ được hiển thị. Tôi đã có một vấn đề tương tự trên máy nhà của tôi và nó hóa ra là vì tôi đã không sử dụng FastCGI để lưu trữ php, vì vậy tôi quyết định điều tra trên trang web được lưu trữ.
Dù sao, tôi nhận thấy trong file web.config của thư mục lưu trữ joomla trên trang web tổ chức dòng sau:
<add name="Plesk_Handler_3522909676" path="*.php" verb="*" modules="IsapiModule" scriptProcessor="c:\program files (x86)\parallels\plesk\additional\pleskphp5\php5isapi.dll" resourceType="Either" />
Từ kinh nghiệm quá khứ, tôi biết rằng php có một số vấn đề khi không chạy dưới fastCGI . Tôi nhận thấy web.config trong thư mục gốc được sử dụng dòng sau thay vì:
<add name="Plesk_Handler_0286090609" path="*.php" verb="*" modules="CgiModule" scriptProcessor="c:\program files (x86)\parallels\plesk\additional\pleskphp5\php-cgi.exe" resourceType="Either" />
tôi sao chép rằng trong web.config trong thư mục joomla, và có hành vi khác nhau ... nhưng vẫn không làm việc. Nếu tôi tải một tập tin .php trong thư mục joomla chạy phpInfo(), dưới Server API nó nói CGI/FastCGI. Có phải là xác nhận tích cực rằng FastCGI đang được sử dụng không? Tại sao trình xử lý trong cấu hình web trỏ tới modules = "CgiModule" thay vì modules = "FastCgiModule" (tôi thậm chí không chắc chắn rằng tồn tại, nhưng tôi chỉ thấy đề cập đến CgiModule đáng ngờ).
Đó là một trang web tổ chức, vì vậy như xa như tôi biết tôi không có quyền truy cập vào tập tin applicationHost.config ...
$ _SERVER ['REQUEST_URI'] có thể hiển thị chính xác trong cả CGI và FastCGI và API máy chủ có thể hiển thị 'CGI/FastCGI' cho cả CGI và FastCGI. Một điểm khác biệt là trong FastCGI $ _SERVER ["REDIRECT_HANDLER"] có thể hiển thị php-fastcgi, nhưng điều đó cũng không xác nhận rằng "FastCGI" đang được sử dụng vì "php-fastcgi" chỉ là tên biến được sử dụng trong tệp cấu hình . –
@ Jimmy, Câu trả lời này là rất cần [trích dẫn] (http://xkcd.com/285). Ngoài ra, phương pháp bạn mô tả âm thanh một chút * hacky *, có cách nào tốt hơn và mạnh mẽ hơn để xác định cài đặt trực tiếp không? – Pacerier
@Pacerier Nó làm việc cho tôi, và dường như đối với nhiều người khác. Tôi không thể tìm thấy một cách tốt hơn, nhưng cảm thấy tự do để gửi một câu trả lời "tốt hơn và mạnh mẽ hơn" nếu bạn có một. Tôi tự nghĩ ra nó, vì thế không có trích dẫn nào. – Jimmy