在 Windows Server 環境下,IIS (Internet Information Services) 是原生的 Web 伺服器平台。若需運行 PHP 應用程式,必須正確配置 IIS 支援 PHP 解析。本文提供從 PHP 下載、安裝、環境變數設定、php.ini 調整,到 IIS ISAPI 映射配置的完整圖文教學,適用於 IIS 6.0/7.x/8.x/10.x 環境。
C:\php (避免空格與中文路徑)以系統管理員身分開啟「編輯系統環境變數」:
Path,點「編輯」→「新增」→ 加入 C:\phpPHPRC,值設為 C:\php (指定 php.ini 位置)優點:免將 DLL 複製至 System32,避免版本衝突,方便多版本共存與升級。
cd C:\php
copy php.ini-production php.ini
使用編輯器 (VS Code / Notepad++) 修改關鍵項:
| 指令名稱 | 建議值 | 說明 |
|---|---|---|
extension_dir | ext | 相對路徑即可,指向擴充模組目錄 |
cgi.force_redirect | 0 | IIS 必須設 0,否則 404/500 錯誤 |
cgi.fix_pathinfo | 1 | 支援 PATH_INFO (如 CodeIgniter/Laravel) |
fastcgi.impersonate | 1 | 啟用 FastCGI 模擬安全權限 |
date.timezone | Asia/Taipei | 設定預設時區,避免日期函數警告 |
display_errors | Off | 生產環境關閉錯誤顯示,改寫入日誌 |
error_log | C:\php\logs\php_errors.log | 指定錯誤日誌路徑,需建立資料夾並給 IIS_IUSRS 寫入權限 |
session.save_path | C:\php\sessions | Session 儲存路徑,同樣需寫入權限 |
upload_max_filesize | 20M | 上傳大小限制,配合 post_max_size |
post_max_size | 25M | POST 總大小,需大於 upload_max_filesize |
在 php.ini 中搜尋以下行,移除前方分號 ; 啟用:
extension=curl
extension=gd
extension=mbstring
extension=mysqli
extension=pdo_mysql
extension=openssl
extension=xml
extension=zip
extension=intl
; Windows 特有
extension=com_dotnet
視專案需求啟用 sqlsrv、pdo_sqlsrv (連接 SQL Server)、redis、memcached 等第三方擴充 (需另行下載 DLL 放入 ext 目錄)。
開啟「伺服器管理員」→「新增角色及功能」→ 勾選:
C:\php\php-cgi.exeC:\php\php.ini (修改 ini 後自動回收進程)10 (視 CPU 核心數調整)PHP_FCGI_MAX_REQUESTS=10000 (防止記憶體洩漏)*.phpFastCgiModule (下拉選單選擇)C:\php\php-cgi.exePHP via FastCGIindex.phpindex.php 移至最上方 (最高優先級)# 以系統管理員 CMD/PowerShell 執行
icacls "C:\php" /grant "IIS_IUSRS:(OI)(CI)RX" /T
icacls "C:\inetpub\wwwroot" /grant "IIS_IUSRS:(OI)(CI)RX" /T
# 若有上傳/快取目錄
icacls "C:\php\sessions" /grant "IIS_IUSRS:(OI)(CI)M" /T
icacls "C:\php\logs" /grant "IIS_IUSRS:(OI)(CI)M" /T
在網站根目錄 (如 C:\inetpub\wwwroot) 建立 phpinfo.php:
<?php
phpinfo();
?>
訪問 https://localhost/phpinfo.php 或 https://<伺服器IP>/phpinfo.php。若顯示 PHP 版本資訊表格 (紫色標題列),代表配置成功!
| 現象 | 可能原因 | 解決方案 |
|---|---|---|
| HTTP 500 / 空白頁 | php.ini 錯誤、擴充模組缺失 DLL、權限不足 | 檢查 C:\php\logs\php_errors.log、Event Viewer → Application、確認 VC++ Redistributable 已安裝 |
| HTTP 404.3 | 處理常式對應未建立或路徑錯誤 | 重新檢查 FastCGI 應用程式與模組對應設定 |
| No input file specified | cgi.fix_pathinfo=0 或路徑問題 | 設定 cgi.fix_pathinfo=1,確認網站實體路徑正確 |
| 擴充模組無法載入 | DLL 版本不符 (TS/NTS 混用)、缺少相依 DLL | 確認下載 NTS 版、安裝對應 VC++ Runtime、使用 Dependency Walker 診斷 |
opcache.enable=1、opcache.memory_consumption=128、opcache.max_accelerated_files=10000,大幅提升效能。完成上述步驟,您的 IIS 即具備生產級 PHP 運行環境。建議後續導入 Composer 管理套件、配置 SSL 憑證、設定 URL Rewrite (匯入 .htaccess 規則)、部署應用程式 (Laravel, Symfony, WordPress 等)。妥善規劃權限、日誌輪替與監控告警,即可穩定服務線上業務。