Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> 電腦軟體教學 >> 伺服器技術 >> 關於伺服器

解決「您不具備查看該目錄或頁面的權限」:PHP 目錄讀取權限缺失導致 ACL 拒絕

編輯:關於伺服器

現象:IIS 站點訪問報 HTTP 401.3 / 403,「您不具備查看該目錄或頁面的權限,因為訪問控制列表 (ACL) 對 Web 服務器上的該資源進行了配置」。同服務器 ASP 站點正常,PHP 站點全掛。

根因定位

  1. IIS 網站綁定的匿名用戶 (IUSR / IIS_IUSRS) 對 **網站目錄** 權限正常 (讀取/執行)。
  2. 但 PHP 解析器 (`php-cgi.exe`) 所在目錄 (如 `D:\PHP\`) **缺少該匿名用戶的讀取/執行權限**。
  3. 請求流程:IIS 接收請求 → 轉發給 FastCGI 模組 → FastCGI 嘗試啟動 `php-cgi.exe` → 文件系統 ACL 檢查失敗 → 返回 401.3/403。

解決步驟

  1. 右鍵 PHP 安裝目錄 (如 `D:\PHP`) → 「屬性」→ 「安全」標籤。
  2. 點擊「編輯」→ 「添加」→ 輸入對象名稱:IIS_IUSRS (或具體站點應用程式池標識 `IIS AppPool\YourPoolName`) → 「檢查名稱」→ 確定。
  3. 授予權限:**讀取和執行**、**列出文件夾內容**、**讀取** (勾選即可,無需寫入/修改)。
  4. 勾選「替換子對象權限條目...」遞歸應用到所有子目錄文件。
  5. 確定關閉對話框,執行 iisreset 或回收對應應用程式池。

驗證

瀏覽器訪問 PHP 頁面 (如 `phpinfo.php`),正常顯示,不再報 401.3/403。

擴展:應用程式池標識最佳實踐

  • 每個站點**獨立應用程式池**,標識使用 **ApplicationPoolIdentity** (虛擬帳戶 `IIS AppPool\PoolName`),自動擁有最小權限。
  • 僅需在 PHP 目錄、網站目錄、上傳目錄、Session 存儲目錄授予對應 `IIS AppPool\PoolName` 權限,實現站點間權限隔離。
  • 避免使用 `Network Service`、`Local System` 等高權限內建帳戶運行網站。
Copyright © Windows教程網 All Rights Reserved