PHP 執行期動態讀寫 php.ini 設定值,靠這四個函數搞定。掌握它們能在無權修改主設定檔的虛擬主機環境下靈活調整行為。
echo 'display_errors = '.ini_get('display_errors')."\n"; // 1 或 0
echo 'post_max_size = '.ini_get('post_max_size')."\n"; // 8M
echo 'post_max_size+1 = '.(ini_get('post_max_size')+1)."\n"; // 9(字串自動轉數字)
magic_quotes_gpc、register_globals)。function stringFilter($str) {
return ini_get('magic_quotes_gpc') ? $str : addslashes($str);
}
PHP_INI_USER 或 PHP_INI_ALL)。
$inis = ini_get_all();
print_r($inis);
/* 輸出結構:
Array(
'display_errors' => Array(
'global_value' => 1,
'local_value' => 1,
'access' => 7 // PHP_INI_ALL
),
...
)
*/
ini_get_all('mysql'))。access 欄位對應 PHP_INI_* 常數,判斷可否被 ini_set 修改。ini_set('display_errors', '0'); // 暫時關閉
// ... 執行敏感操作 ...
ini_restore('display_errors'); // 還原 php.ini 原值
ini_set('display_errors', '1'); error_reporting(E_ALL);ini_set('display_errors', '0'); ini_set('log_errors', '1');post_max_size、upload_max_filesize、max_execution_time、memory_limit(需 PHP_INI_PERDIR 以上權限,通常須改 .htaccess 或 php.ini)。ini_get 檢測環境差異,寫自適應相容代碼。注意:ini_set無法修改PHP_INI_SYSTEM級指令(如date.timezone、extension載入),這些必須在 php.ini / httpd.conf / .user.ini 中設定並重啟 PHP-FPM/Apache 生效。