首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 設定檔操作四大核心函數:ini_get、ini_set、ini_get_all、ini_restore 實戰詳解

     編輯:PHP 綜合知識

PHP 執行期動態讀寫 php.ini 設定值,靠這四個函數搞定。掌握它們能在無權修改主設定檔的虛擬主機環境下靈活調整行為。

1. ini_get(string $varname) — 讀取單一設定

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(字串自動轉數字)
  • 回傳字串;布林值對應 "1"/"0";不存在回傳空字串。
  • 常用於檢查功能是否啟用(如 magic_quotes_gpc、register_globals)。

實戰:自適應字串過濾

function stringFilter($str) {
    return ini_get('magic_quotes_gpc') ? $str : addslashes($str);
}

2. ini_set(string $varname, string $newvalue) — 執行期修改

  • 僅影響當前腳本生命週期,腳本結束自動還原。
  • 非所有指令可修改(參考 官方清單,模式為 PHP_INI_USER 或 PHP_INI_ALL)。

常用場景

3. ini_get_all([string $extension]) — 取得所有設定

$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 修改。

4. ini_restore(string $varname) — 還原預設值

ini_set('display_errors', '0'); // 暫時關閉
// ... 執行敏感操作 ...
ini_restore('display_errors');  // 還原 php.ini 原值

最佳實踐清單

  1. 開發環境:ini_set('display_errors', '1'); error_reporting(E_ALL);
  2. 生產環境:ini_set('display_errors', '0'); ini_set('log_errors', '1');
  3. 大檔上傳:同步調大 post_max_size、upload_max_filesize、max_execution_time、memory_limit(需 PHP_INI_PERDIR 以上權限,通常須改 .htaccess 或 php.ini)。
  4. 攜帶式應用:用 ini_get 檢測環境差異,寫自適應相容代碼。
注意:ini_set 無法修改 PHP_INI_SYSTEM 級指令(如 date.timezone、extension 載入),這些必須在 php.ini / httpd.conf / .user.ini 中設定並重啟 PHP-FPM/Apache 生效。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved