在Windows Server 2003 64位操作系統中完成PHP環境配置后,當嘗試執行PHP文件時,系統彈出錯誤提示:“1% 不是有效的 win32 應用程序”(英文提示為“%1 is not a valid Win32 application”)。此時HTML文件可正常訪問,唯獨PHP文件無法解析,表明問題并非環境配置缺失,而是與系統架構及IIS運行模式直接相關。
Windows Server 2003 64位系統默認啟用IIS的64位工作模式,而PHP作為32位應用程序,其核心庫與依賴組件均基于32位架構設計。當64位IIS嘗試加載32位PHP引擎時,因進程位寬不匹配(64位進程無法直接執行32位機器碼),導致系統判定目標文件“無效”,從而觸發上述報錯。這種兼容性問題在混合部署32位應用與64位服務器的場景中較為常見,需通過調整IIS配置以支持32位應用運行。
為解決該兼容性問題,需顯式配置IIS允許32位應用程序在其應用程序池中運行。具體操作步驟如下:
1. 打開命令提示符環境:通過“開始”菜單依次選擇“運行”,輸入cmd命令并執行,進入Windows命令行界面。
2. 執行32位應用支持啟用腳本:在命令提示符中輸入以下命令并回車執行:
```
cscript %SYSTEMDRIVE%\inetpub\adminscripts\adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 1
```
其中,%SYSTEMDRIVE%為系統盤符變量(默認為C盤),若系統盤非C盤,需手動替換為實際盤符(如D:\inetpub\adminscripts\adsutil.vbs)。該命令通過IIS管理腳本adsutil.vbs修改應用程序池配置參數Enable32bitAppOnWin64,將其值設為1,以啟用32位應用支持功能。
執行完成后,重啟IIS服務(可通過iisreset命令實現),PHP文件即可正常解析運行。
完成上述配置后,部分用戶可能會遇到新問題:訪問網頁時返回“Service Unavailable”(服務不可用)錯誤。該問題通常與ASP.NET腳本映射未正確注冊相關,特別是在.NET Framework版本與IIS未完全綁定的場景下。解決方法如下:
1. 進入命令提示符環境:同上述步驟,通過“開始→運行→cmd”打開命令行界面。
2. 注冊ASP.NET腳本映射:執行以下命令重新注冊指定版本的.NET Framework:
```
%SYSTEMROOT%\Microsoft.NET\Framework\v1.1.4322\aspnet_regiis.exe -i
```
其中,%SYSTEMROOT%為系統目錄變量(默認為C:\WINDOWS),v1.1.4322為.NET Framework 1.1版本號。若需注冊其他版本(如.NET 2.0),可替換為對應目錄(如v2.0.50727)。該命令通過aspnet_regiis.exe工具重新生成IIS與ASP.NET的腳本映射關系,確保IIS能夠正確處理ASP.NET請求。
執行后重啟IIS服務,“Service Unavailable”問題即可得到解決。