部署、除錯、相容性檢查時,快速獲取伺服器關鍵資訊的標準函式與超全域變數。
| 資訊類別 | 獲取方式 | 範例輸出 |
|---|---|---|
| PHP 版本 | 8.1.12 | |
| Zend Engine 版本 | 4.1.12 | |
| 作業系統 | Linux / Darwin / Windows | |
| Web 伺服器軟體 | Apache/2.4.41 / nginx/1.18.0 | |
| MySQL 支援 | true/false | |
| MySQL 持久連線 | On/Off | |
| MySQL 最大連線數 | -1 (無限制) / 數值 | |
| 上傳大小限制 | 2M / 100M | |
| 腳本最大執行時間 | 30 / 0 (無限制) | |
| 記憶體限制 | 128M / 512M | |
| MySQL 伺服器版本 | 5.7.33 / 8.0.28 | |
| 伺服器時間 | 2024-01-15 14:30:00 |
info.php 訪問)<?php
// 設定時區
date_default_timezone_set('Asia/Taipei');
$info = [
'PHP 版本' => PHP_VERSION,
'Zend 版本' => zend_version(),
'作業系統' => PHP_OS,
'OS Family (7.2+)' => PHP_OS_FAMILY ?? 'N/A',
'Web 伺服器' => $_SERVER['SERVER_SOFTWARE'] ?? 'CLI',
'MySQLi 支援' => extension_loaded('mysqli') ? '是' : '否',
'PDO MySQL 支援' => extension_loaded('pdo_mysql') ? '是' : '否',
'MySQL 持久連線' => ini_get('mysqli.allow_persistent'),
'MySQL 最大連線數' => ini_get('mysqli.max_links') == -1 ? '無限制' : ini_get('mysqli.max_links'),
'上傳限制' => ini_get('upload_max_filesize'),
'POST 限制' => ini_get('post_max_size'),
'最大執行時間' => ini_get('max_execution_time') . ' 秒',
'記憶體限制' => ini_get('memory_limit'),
'當前時間' => date('Y-m-d H:i:s'),
];
// 若有資料庫連線,顯示 MySQL 版本
if (extension_loaded('mysqli')) {
$mysqli = @new mysqli('localhost', 'user', 'pass', 'db');
if (!$mysqli->connect_error) {
$info['MySQL 伺服器版本'] = $mysqli->server_info;
$mysqli->close();
}
}
// 表格輸出
echo '<table border="1" cellpadding="5" cellspacing="0" style="border-collapse:collapse;font-family:monospace;">';
echo '<tr><th>項目</th><th>數值</th></tr>';
foreach ($info as $k => $v) {
echo "<tr><td>$k</td><td>$v</td></tr>";
}
echo '</table>';
?>
// 列出所有載入擴展
print_r(get_loaded_extensions());
// 檢測特定擴展
$required = ['redis', 'memcached', 'gd', 'curl', 'mbstring', 'xml', 'zip', 'bcmath'];
foreach ($required as $ext) {
echo "$ext: " . (extension_loaded($ext) ? '✅' : '❌') . "\n";
}
// 顯示完整 phpinfo() (僅開發環境使用!)
if (php_sapi_name() !== 'cli') {
// phpinfo(); // 生產環境嚴禁!
}
# 命令列快速查看 php -v # 版本 php -m # 模組 php -i | grep memory_limit # 特定配置 php -r "echo PHP_OS;" # 作業系統
phpinfo() 或詳細環境資訊頁面,會洩露路徑、配置、模組等敏感資訊建立標準化環境檢測腳本,納入部署清單,讓「在我機器上能跑」成為歷史。