函數速查表
| 函數 | 用途 | 回傳值 |
ini_get($varname) | 取得單一設定值 | 字串 / "1"(On) / "0"(Off) / 空字串(未設定) |
ini_set($varname, $newvalue) | 執行期修改設定 | 舊值 / false(失敗) |
ini_get_all([$extension]) | 取得所有設定陣列 | 關聯陣列 [global_value, local_value, access] |
ini_restore($varname) | 還原為 php.ini 原始值 | void |
實戰範例
1. 動態檢測 magic_quotes_gpc 並決定是否 addslashes
function stringFilter($str) {
// PHP 5.4+ 已移除 magic_quotes_gpc,僅作舊版相容示範
if (ini_get('magic_quotes_gpc')) {
return $str;
}
return addslashes($str);
}
2. 相容 register_globals 開關的變數取得
function getGetVar($var) {
if (ini_get('register_globals')) {
return $$var; // 直接取全域變數(不建議)
}
return $_GET[$var] ?? null; // 現代標準寫法
}
3. 執行期調整錯誤報告層級
// 開發環境顯示所有錯誤
ini_set('display_errors', '1');
ini_set('error_reporting', E_ALL);
// 生產環境隱藏錯誤但記錄日誌
ini_set('display_errors', '0');
ini_set('log_errors', '1');
ini_set('error_log', '/var/log/php_errors.log');
4. 取得所有 core 設定值
$all = ini_get_all('core');
foreach ($all as $name => $info) {
echo "$name => {$info['local_value']} (access: {$info['access']})<br>";
}
存取模式常數
PHP_INI_USER:腳本可用 ini_set 修改
PHP_INI_PERDIR:php.ini / .htaccess / httpd.conf 可修改
PHP_INI_SYSTEM:僅 php.ini / httpd.conf 可修改
PHP_INI_ALL:任意位置可修改
注意事項
ini_set 修改僅影響當前請求生命週期,請求結束自動還原。
- 部分系統級設定(如
memory_limit、max_execution_time)在腳本啟動後修改可能不生效。
- PHP 8.1+ 棄用
ini_get_all() 的 $extension 參數,建議改用 php_ini_loaded_file() 配合解析。