在 Windows Server 2003 + IIS 6 + PHP 5 環境下部署 ECShop 等 PHP 應用時,常遇到 Warning: require(../includes/init.php) failed to open stream 錯誤。本文分析根本原因並提供完整權限設定解決方案。
Warning: require(../includes/init.php) [function.require]: failed to open stream:
No such file or directory in C:\AppServ\www\index.php on line 22
Fatal error: require() [function.require]: Failed opening required '../includes/init.php'
(include_path='.;C:\php5\pear') in C:\AppServ\www\index.php on line 22
這不是路徑錯誤,而是目錄權限繼承問題:
web_ecshop)必須擁有完整讀取/執行權限
D:\ (administrator)
└── Web\ (administrator) ← 網站容器目錄
└── ecshop\ (administrator) ← 網站根目錄 ❌ 缺少 IIS 帳號
├── Data\ (administrator + web_ecshop)
└── Web\ (administrator + web_ecshop)
D:\ (administrator)
└── Web\ (administrator + web_ecshop) ← 容器目錄需包含 IIS 帳號
└── ecshop\ (administrator + web_ecshop) ← 根目錄繼承上層權限 ✅
├── Data\ (繼承)
└── Web\ (繼承)
D:\Web) → 「內容」 → 「安全性」web_ecshop)ecshop)重複上述操作,確保權限繼承正確iisreset)在網站根目錄建立測試檔 test.php:
<?php
require('../includes/init.php');
echo '載入成功';
瀏覽器存取 https://localhost/test.php,若顯示「載入成功」即表示權限設定正確。
php -S)開發時不會遇到此問題