get_cfg_var() 是 PHP 內建函數,用於獲取 PHP 配置文件 (php.ini) 中的原始配置值。與 ini_get() 不同,它讀取的是啟動時的原始配置,而非運行時可能被修改的值。
string get_cfg_var(string $varname)
false| 配置項 | 說明 | 典型值 |
|---|---|---|
| max_execution_time | 腳本最大執行時間 (秒) | 30 |
| memory_limit | 每個腳本可用記憶體上限 | 128M |
| post_max_size | POST 請求最大資料量 | 8M |
| upload_max_filesize | 上傳文件大小上限 | 2M |
| smtp | SMTP 伺服器地址 | localhost |
| display_errors | 是否顯示錯誤資訊 | On/Off |
| error_reporting | 錯誤報告級別 | E_ALL |
<?php
$configs = [
'max_execution_time' => '最大執行時間',
'memory_limit' => '記憶體限制',
'post_max_size' => 'POST 最大大小',
'upload_max_filesize' => '上傳文件大小限制',
'smtp' => 'SMTP 伺服器',
'display_errors' => '顯示錯誤',
'error_reporting' => '錯誤報告級別'
];
echo "<h3>PHP 核心配置資訊</h3>";
echo "<table border='1' cellpadding='5'>";
echo "<tr><th>配置項</th><th>說明</th><th>當前值</th></tr>";
foreach ($configs as $key => $desc) {
$value = get_cfg_var($key);
$display = $value !== false ? htmlspecialchars($value) : '未設定/獲取失敗';
echo "<tr><td>$key</td><td>$desc</td><td>$display</td></tr>";
}
echo "</table>";
?>
| 特性 | get_cfg_var() | ini_get() |
|---|---|---|
| 讀取來源 | php.ini 原始配置 | 當前運行時配置 |
| 受 ini_set() 影響 | 否 | 是 |
| 適用場景 | 檢查原始配置、診斷環境 | 檢查當前生效配置 |
extension) 無法通過此函數讀取disable_functions 需用 ini_get() 並自行解析<?php
function detectConfigChanges() {
$criticalConfigs = ['memory_limit', 'max_execution_time', 'post_max_size'];
$changes = [];
foreach ($criticalConfigs as $config) {
$original = get_cfg_var($config);
$current = ini_get($config);
if ($original !== $current) {
$changes[$config] = [
'original' => $original,
'current' => $current,
'modified' => true
];
}
}
return $changes;
}
$changes = detectConfigChanges();
if (!empty($changes)) {
echo "<h4>⚠️ 偵測到運行時配置異動</h4>";
print_r($changes);
} else {
echo "所有關鍵配置與 php.ini 一致";
}
?>
get_cfg_var() 是診斷 PHP 環境、審計配置安全性的重要工具。結合 ini_get() 使用,能完整掌握配置的原始狀態與運行時狀態。