在IIS7.0上以FastCGI方式配置好PHP運行環境,測試可以正常運行PHP程式後,將PHP程式部署上去,匯入程式原來的資料和配置資訊。很快就有問題出來啦下面我們就詳細記錄下。
今天準備將一個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的設定,同樣也可以解決問題,只是許可權被進一步放寬了而已。
以上所述就是本文的全部內容了,希望大家能夠喜歡。