Windows Server 2003 + IIS 6.0 + PHP 5 環境,ASP/HTML 正常,PHP 頁面回傳 HTTP 401.3 - 未經授權:因 ACL 設定拒絕存取。
PHP 安裝目錄 (如 C:\PHP、D:\PHP) 的 NTFS 權限缺少 Users 群組的讀取/執行權限,導致 IIS 匿名使用者 (IUSR_*) 或應用程式集區身分無法讀取 PHP 解釋器 (php-cgi.exe) 及擴展模組 (php_*.dll)。
D:\PHP)Users → 「檢查名稱」 → 確定iisreset /restart| 帳號/群組 | 權限 | 遞歸 | 說明 |
|---|---|---|---|
| SYSTEM | 完全控制 | ✅ | 系統核心需求 |
| Administrators | 完全控制 | ✅ | 管理員維護 |
| Users | 讀取和執行、列出資料夾、讀取 | ✅ | 關鍵:IIS 匿名/應用程式集區身分屬於此群組 |
| IUSR_* (匿名帳號) | 讀取和執行、列出資料夾、讀取 | ✅ | 若應用程式集區用 NetworkService 可不額外添加 |
| NETWORK SERVICE | 讀取和執行、列出資料夾、讀取 | ✅ | IIS 6.0 預設應用程式集區身分 |
| CREATOR OWNER | 完全控制 (僅子檔案) | ❌ | 系統預設 |
phpinfo.php:<?php phpinfo(); ?>https://localhost/phpinfo.php| 誤區 | 正確認知 |
|---|---|
| 以為是 php.ini 設定錯誤 | 401.3 是 NTFS 檔案系統權限錯誤,非 PHP 設定問題 |
| 只給 IUSR_* 權限 | IIS 6.0 預設應用程式集區跑在 NETWORK SERVICE,建議直接給 Users 群組 |
| 給 Everyone 完全控制 | 嚴重安全風險,僅需「讀取/執行」即可 |
若使用 FastCGI (非 ISAPI),除 PHP 目錄外,還需確保:
C:\WINDOWS\Temp (或 PHP 設定的 session.save_path、upload_tmp_dir) 給 Users/NETWORK SERVICE 寫入權限核心口訣:PHP 目錄必給 Users 讀取執行。Windows + IIS + PHP 部署,90% 權限問題皆因漏給 Users 群組權限。設定一次,永久生效。