PHP 提供 ini_set() 和 ini_get() 兩個函數,允許腳本在運行時動態讀寫 php.ini 配置選項。這在無法修改 php.ini 文件(如虛擬主機環境)或需根據業務邏輯臨時調整配置時極具價值。
ini_set(string $option, string $value): string|false
false。memory_limit 在某些環境受限)。// 設置腳本最大執行時間為 180 秒(默認 30 秒)
ini_set('max_execution_time', '180');
// 開啟錯誤顯示(開發環境)
ini_set('display_errors', '1');
ini_set('error_reporting', E_ALL);
// 設置默認時區
ini_set('date.timezone', 'Asia/Shanghai');
// 限制上傳文件大小
ini_set('upload_max_filesize', '20M');
ini_set('post_max_size', '25M');
ini_get(string $option): string|false
'1'(開啟)或 '0'(關閉)/''(空字符串)。false。echo ini_get('max_execution_time'); // 輸出: 30 (或運行時修改後的值)
echo ini_get('display_errors'); // 輸出: 1 或 0
var_dump(ini_get('non_existent')); // 輸出: bool(false)
$all_ini = ini_get_all(); // 返回結構: ['option_name' => ['global_value', 'local_value', 'access']] print_r($all_ini['max_execution_time']); // Array ( [global_value] => 30 [local_value] => 180 [access] => 7 )
global_value:php.ini 全局值。local_value:當前腳本生效值(含 ini_set 修改)。access:訪問級別常量(PHP_INI_USER=1, PHP_INI_PERDIR=2, PHP_INI_SYSTEM=4, 組合值如 7=所有級別可改)。僅屬於 PHP_INI_USER 或 PHP_INI_ALL 級別的選項可用 ini_set 修改。完整列表請查閱 PHP 官方文檔 - 配置選項列表 或運行 phpinfo() 查看 "Configuration PHP Core" 部分。
memory_limit、post_max_size 等在生產環境常被鎖定,需通過 php.ini 或 .user.ini 修改。ini_get 做兼容性判斷:修改前獲取舊值,結束時恢復,避免影響後續請求(CLI 模式下尤為重要)。