PHP 系統級函數完整分類速查表
PHP 提供了一組函數用於獲取運行環境、配置參數、擴展模組、版本資訊等系統級數據。本文按功能分類整理,附帶函數用途說明,方便開發調試、環境檢測、兼容性處理時快速查閱。
一、斷言與錯誤處理
| 函數 | 用途 |
assert() | 檢查斷言條件,失敗可觸發錯誤或拋出異常 |
assert_options() | 設置/獲取斷言行為標誌(如 ASSERT_ACTIVE、ASSERT_WARNING) |
二、配置選項讀寫
| 函數 | 用途 |
ini_get($varname) | 獲取單個配置選項值(字串) |
ini_get_all([$extension]) | 獲取所有配置選項,可選按擴展過濾 |
ini_set($varname, $newvalue) | 運行時修改配置選項(僅限 PHP_INI_ALL/USER 類別) |
ini_restore($varname) | 恢復配置選項至 php.ini 原始值 |
ini_alter() | ini_set() 別名 |
get_cfg_var($option) | 獲取 php.ini 原始值(忽略運行時修改) |
set_include_path($path) | 設置 include_path(影響 require/include 搜尋路徑) |
restore_include_path() | 恢復 include_path 至原始值 |
get_include_path() | 獲取當前 include_path |
三、擴展模組檢測
| 函數 | 用途 |
extension_loaded($name) | 檢查擴展是否已載入 |
get_loaded_extensions([$zend_ext]) | 返回所有已載入擴展名稱陣列 |
get_extension_funcs($module) | 返回指定擴展提供的所有函數名稱 |
dl($library) | 動態載入擴展(CLI/嵌入 SAPI 可用,Web SAPI 通常禁用) |
php_ini_scanned_files() | 返回 --with-config-file-scan-dir 目錄下掃描到的 .ini 文件列表 |
四、環境與進程資訊
| 函數 | 用途 |
getenv($varname) | 獲取環境變數值(同 $_ENV、$_SERVER) |
putenv($setting) | 設置環境變數(格式 NAME=VALUE) |
php_sapi_name() | 返回 SAPI 類型(如 apache2handler、cli、fpm-fcgi) |
php_uname([$mode]) | 返回作業系統資訊(a=全部,s=系統名,r=釋放版,v=版本,m=機器類型) |
getmypid() | 獲取當前 PHP 進程 ID |
getmyuid() | 獲取腳本擁有者 UID |
getmygid() | 獲取腳本擁有者 GID |
getmyinode() | 獲取腳本文件 inode 號 |
get_current_user() | 獲取腳本擁有者用戶名 |
getlastmod() | 獲取腳本文件最後修改時間(Unix 時間戳) |
getrusage([$who]) | 獲取資源使用統計(用戶/系統時間、內存、頁錯誤等) |
memory_get_usage([$real]) | 返回腳本佔用內存位元組數 |
memory_get_peak_usage([$real]) | 返回峰值內存佔用 |
五、版本與標識資訊
| 函數 | 用途 |
phpversion([$extension]) | 獲取 PHP 版本或指定擴展版本 |
zend_version() | 獲取 Zend Engine 版本 |
php_logo_guid() | 獲取 PHP Logo GUID(已棄用,PHP 5.5+ 移除) |
zend_logo_guid() | 獲取 Zend Logo GUID(已棄用) |
phpcredits([$flag]) | 輸出貢獻者名單(CREDITS_GROUP、CREDITS_GENERAL 等) |
phpinfo([$what]) | 輸出完整 PHP 配置資訊頁面 |
version_compare($v1, $v2, $op) | 標準化版本號比較(支援 <, >, =, ge, le 等運算子) |
六、常量預定義
| 函數 | 用途 |
get_defined_constants([$categorize]) | 返回所有預定義常量陣列,$categorize=true 時按分組返回 |
七、文件包含追蹤
| 函數 | 用途 |
get_included_files() | 返回已包含/require 文件路徑陣列(含入口腳本) |
get_required_files() | get_included_files() 別名 |
八、Magic Quotes 歷史遺留(PHP 5.4+ 已移除)
| 函數 | 用途 |
get_magic_quotes_gpc() | 獲取 magic_quotes_gpc 狀態 |
get_magic_quotes_runtime() | 獲取 magic_quotes_runtime 狀態 |
set_magic_quotes_runtime($setting) | 設置運行時 magic quotes(已棄用) |
實戰使用場景範例
<?php
// 1. 環境檢測:確保運行在 PHP-FPM 且啟用了 opcache
if (php_sapi_name() !== 'fpm-fcgi' || !extension_loaded('Zend OPcache')) {
die('本應用需 PHP-FPM + OPcache 環境');
}
// 2. 版本兼容:PHP 7.1+ 才支援 void 返回類型
if (version_compare(phpversion(), '7.1.0', '<')) {
trigger_error('請升級 PHP 至 7.1+', E_USER_ERROR);
}
// 3. 動態調整配置:上傳大文件時臨時放大限制
ini_set('upload_max_filesize', '100M');
ini_set('post_max_size', '100M');
ini_set('max_execution_time', 300);
// 4. 記憶體監控:長時間運行腳本定期檢查
if (memory_get_usage(true) > 256 * 1024 * 1024) {
// 觸發 GC 或分批處理
gc_collect_cycles();
}
// 5. 獲取所有常量用於調試輸出
$consts = get_defined_constants(true);
print_r($consts['Core']); // 核心常量
最佳實踐提醒
ini_set 只能修改 PHP_INI_USER、PHP_INI_ALL 類別的選項,PHP_INI_SYSTEM、PHP_INI_PERDIR 必須在 php.ini/Web 服務器配置中修改
get_cfg_var 讀取的是 php.ini 原始值,不受 ini_set 影響
phpinfo() 輸出包含敏感資訊,生產環境嚴禁公開訪問
- 使用
version_compare 而非字串比較來判斷版本號大小
- CLI 腳本中
getenv 可讀取系統環境變數,Web 環境下受 variables_order 影響
將此速查表收藏,下次需要「判斷擴展是否載入、動態調整上傳限制、檢查 PHP 版本兼容性」時,即可秒級定位對應函數。