環境: windows 2008 server R2 IIS7.5 fastcgi
問題: 原來的程序采用Apache 運行,現在移植到IIS 上,原來的在程序中調用生成圖片的系統程序出現不能執行問題,也看了很多微博,現在總結一下,從一下幾個思路中進行解決;
因為原來的程序是執行正常的,因此主要是環境的變化導致的,所以排除程序問題,主要是從權限不同考慮。
1: 在查詢里看一下執行的用戶是誰。
exec( "whoami" , $output , $ret );
顯示一下$output 的信息,可以確認一下,iis執行的時候,用戶是誰。
$ret 如果是 1 , 則說明執行有錯誤, 0 則執行正常。
2: 因為apache 是從系統用戶運行的,iis是網絡用戶,因此需要設置cmd的用戶權限,位置在c:/windows/system32/cmd.exe , 增加IUSR的可執行權限;
增加了此用戶還是不能正常運行;
3: 配置IIS的應用程序池,把標識改為LocalSystem , IIS默認的是ApplicationPoolIdentity
4: 增加網站權限,因為程序需要寫入數據,點擊你的網站,又上角有一個編輯權限,給你需要寫入數據的目錄增加你的網絡用戶權限讀寫,一般為IUSR用戶。
5:如果前面還不能解決房問題,確認一下執行程序的位置,因為IIS采用的網絡用戶執行,因此系統的環境與普通驗證用戶不同,把需要執行的程序路徑寫完整了,不要采用相對路徑;往往可以解決問題。
我的這個問題上摸索了一個上午,最后在第五部的時候把問題解決了,在我本地windows7 沒有問題,最后增加了一個完整路徑的配置,以后不同環境增加一個配置,我把這個問題整理一下,以便給有類似問題的人一個解決思路吧。
