在 Apache 以模組模式運行 PHP 時,PHPIniDir 指令是指定 php.ini 路徑的關鍵。本文詳細說明其作用、php.ini 搜尋順序與實際配置範例。
告訴 Apache 載入的 PHP 模組去哪裡讀取 php.ini。僅適用於 mod_php(Apache 2 module),CLI 模式無效。
HKEY_LOCAL_MACHINE\SOFTWARE\PHP\IniFilePath (Windows)PHPRCC:\windows 或 C:\winnt)若未設定 PHPIniDir,PHP 會依序嘗試上述位置,容易導致載入非預期的設定檔。
# 載入 PHP 模組(路徑依實際安裝調整)
LoadModule php5_module "C:/php/php5apache2_4.dll"
# 指定 php.ini 目錄(注意:是目錄,非檔案路徑)
PHPIniDir "C:/php"
# 關聯 .php 副檔名
AddType application/x-httpd-php .php
# 可選:設定預設首頁
DirectoryIndex index.php index.html
| 錯誤現象 | 可能原因 | 解決方案 |
|---|---|---|
| 修改 php.ini 不生效 | 載入了錯誤的 php.ini | 執行 phpinfo() 確認 Loaded Configuration File 路徑 |
| Apache 啟動失敗 | PHPIniDir 路徑錯誤或權限不足 | 路徑使用雙引號、正斜線、目錄存在、Apache 使用者可讀 |
| Windows 下路徑含空格 | 路徑未加引號 | PHPIniDir "C:/Program Files/PHP" |
| 多版本 PHP 共存 | 環境變數/註冊表干擾 | 強制使用 PHPIniDir 隔離各版本設定 |
<?php
phpinfo();
// 瀏覽器查看:
// Loaded Configuration File → C:\php\php.ini
// PHPIniDir → C:\php
現代生產環境多採用 Nginx/Apache + PHP-FPM,此時 不使用 PHPIniDir,而是:
php.ini--php-ini 參數指定php-fpm.conf 覆蓋特定設定PHPIniDirphp.ini 放在 PHP 安裝目錄,避免放在系統目錄.user.ini(PHP 5.3+)或 PHP-FPM Pool 隔離