今天在執行 WordPress 上的版本更新時,因為更新檔案太大,出現了錯誤「FastCGI 處理序超過設定的活動逾時」。
這是執行 FastCGI 過久而發生的 Timeout 的問題,要修改 FastCGI Timeout 設定需要到 IIS 的設定檔。
路徑為: C:\Windows\System32\inetsrv\config\applicationHost.config
用純文字開啟 applicationHost.config
然後搜尋 「」,找到以下設定
<fastCgi>
<application fullPath="E:\Project\WebServer\php-7.4.7-nts-Win32-vc15-x64\php-cgi.exe" />
</fastCgi>
fullPath 的設定值依個人環境有所不同。
增加 fastCgi /application 的 timeout 設定 requestTimeout="900" activityTimeout="180"
修改後的結果為
<fastCgi>
<application fullPath="E:\Project\WebServer\php-7.4.7-nts-Win32-vc15-x64\php-cgi.exe" requestTimeout="900" activityTimeout="180"/>
</fastCgi>
requestTimeout:
指定應用程式提出要求的允許時間上限。 如果 FastCGI 處理序處理單一要求時所花費的時間超過指定的時間長度,系統就會終止此處理序。 預設值為 90 秒,建議修改值為 900 秒。
activityTimeout:
指定應用程式的 FastCGI 處理序逾時之前,允許此處理序未與 IIS 通訊執行的時間長度上限。 這個逾時值可用來偵測並關閉停止回應的處理序。 預設值為 30 秒,建議修改值為 180 秒。
修改完成之後,在重啟 IIS 上的網站就可以了喔。
FastCGI 是 IIS 與 PHP 之間的溝通閘道器。
在講 FastCGI 前先解釋一下 CGI,CGI 全稱是「公共閘道器介面 (Common Gateway Interface)」,HTTP 伺服器與你的或其它機器上的程式進行交談的一種工具,其程式須執行在網路伺服器上。
而 FastCGI 是一種常駐型的 CGI,當 PHP 啟動時、會去尋找 php.ini,進行環境的初始化,如果不使用 FastCGI 的情況下,每一個請求都會做這個動作,很明顯浪費系統資源,所以 FastCGI 會先啟動一個 master,解析配置文件用,接下來再啟動 worker,當請求過來時,master 會遞資訊給 worker,然後接下來等下一個請求,有這個機制就不用每一次重新跑一次初始化的動作了。
想要了解更多的 IIS 上相關 FastCGI 設定,可參考以下網址:
https://forsenergy.com/zh-tw/inetsrvmmc/html/e3ce5574-abc0-4108-a8f7-d7ac6452a534.htm
WordPress 安裝佈景主題遇到 No working transports found 錯誤
Windows Server IIS 如何安裝 PHP 網頁伺服器
如何讓 IIS 底下的 PHP 顯示錯誤內容 (500 Error)