今天準備將一個php demo放在IIS下運行,網站在IIS下的配置是這樣的:
應用程式集區是整合模式下的.net framework 2.0(2.0或4.0沒什麼關係,因為php以fastCGI的方式在跑), 應用程式集區標識配置為IIS內建的NETWORKSERVICE, 使用的認證方式為匿名驗證。
開啟本地的網站,造訪php頁面, 出現了500錯誤。
好吧,是權限問題,最簡單的解決方法是把C:UsersAdministratorPhpstormProjectsphpDemo的權限設成Everyone, 並允許完全控制:
重新訪問php頁面,成功了:
上面的方法是夠簡單,但也太不安全了,平常本地搭個demo這樣做沒問題,真正上線的時候,這樣做遲早出問題的。
於是重新設置,把該目錄下的唯讀權限賦給NETWRORKSERVICE帳號再試一下
不過問題還是沒有解決,訪問的時候,出現了401錯誤
錯誤訊息中包含顯示登入使用者為匿名,檢查了網站下的驗證(再點選匿名驗證->編輯),原來網站預設情況下,在登入方法為匿名時,使用的預設登入使用者為IUSR(就是我們看到的匿名登入使用者了)
那麼解決方法就是:
1. 將IUSR設定為C:UsersAdministratorPhpstormProjectsphpDemo的讀取權限,類似先前對NETWORKSERVICE的設定。
2. 或選擇使用應用程式集區識別即可。
經試驗,方法1與2都成功。
Note: NETWORKSERVICE在IIS7中隸屬於iis_iusers用戶群組,先前對NETWORKSERVICE的設定也可以改為對iis_iusers的設置,同樣也可以解決問題,只是權限被進一步放寬了而已。
以上就介紹了php以fastCGI的方式運行在iis下,遇到的檔案系統權限問題及解決方法,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。