NetworkServiceIUSR 身分)C:\Users\Administrator\PhpstormProjects\phpDemo


⚠️ 生產環境嚴禁,安全風險極高。


錯誤詳情顯示登入使用者為「匿名」。檢查 IIS「匿名驗證」編輯:

關鍵發現:IIS 匿名驗證預設使用 IUSR 內建帳號,而非應用程式集區身分 (NetworkService)。
IUSR → 檢查名稱 → 確定此後匿名請求直接使用應用程式集區身分 (NetworkService 或自訂帳號),只需確保該身分有目錄權限即可。

| 需求 | 建議身分 | 權限 | 設定位置 |
|---|---|---|---|
| 靜態檔案/ PHP 腳本讀取 | 應用程式集區身分 / IUSR | 讀取、讀取和執行、列出內容 | 網站根目錄 NTFS 安全性 |
| 上傳目錄/快取/日誌寫入 | 應用程式集區身分 | 修改 (讀寫、刪除、新增) | 特定子目錄 (如 /uploads, /runtime) |
| 資料庫連線/外部 API | 應用程式集區身分 | 網路存取 (防火牆出站規則) | Windows 防火牆/雲安全組 |
| 多站點隔離 | 各站點專用應用程式集區 + 專用帳號 | 最小權限原則 | 建立獨立 AppPool + 自訂身分 |
<?php
// test_permission.php
$testFile = __DIR__ . '/write_test.tmp';
$testDir = __DIR__ . '/uploads';
echo "PHP 執行身分: " . get_current_user() . "\n";
echo "進程擁有者: " . exec('whoami') . "\n";
echo "\n--- 讀取測試 ---\n";
echo "讀取自身: " . (is_readable(__FILE__) ? 'OK' : 'FAIL') . "\n";
echo "\n--- 寫入測試 ---\n";
$writeOk = @file_put_contents($testFile, 'test') !== false;
echo "建立檔案: " . ($writeOk ? 'OK' : 'FAIL') . "\n";
if ($writeOk) @unlink($testFile);
echo "\n--- 目錄建立測試 ---\n";
$dirOk = @mkdir($testDir, 0755, true);
echo "建立目錄: " . ($dirOk ? 'OK' : 'FAIL') . "\n";
if ($dirOk) @rmdir($testDir);
部署此腳本訪問,可快速驗證 PHP 進程實際擁有的檔案系統權限。