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

PHPnow 內建 PHP 探針環境檢測代碼完整版與使用指南

     編輯:PHP 相關知識

PHPnow 內建 PHP 探針環境檢測代碼完整版與使用指南

PHPnow(國產經典 PHP 一鍵安裝包)內建一款功能完整的 PHP 探針,可檢測伺服器資訊、PHP 組件支援、MySQL 連線測試、外網 IP 獲取等。本文提供完整原始碼解析、部署方式與常見問題解答。

一、探針核心功能模組

  • 伺服器資訊: SERVER_NAME、SERVER_ADDR、SERVER_SOFTWARE、PHP_SAPI、php.ini 路徑、DocumentRoot、系統時間。
  • PHP 組件檢測: Zend Optimizer、MySQL、GD Library、eAccelerator 版本與狀態。
  • MySQL 連線測試: 表單輸入 Host/DB/User/Pass,即時測試連線與選庫結果。
  • 外網 IP 獲取: AJAX 非同步請求 phpnow.org 取得伺服器公網 IP。
  • phpinfo() 快捷入口: ?act=phpinfo 直接呼叫(若未被 disable_functions 禁用)。

二、完整部署步驟

  1. 將下方代碼儲存為 probe.php 放入網站根目錄(如 htdocs/)。
  2. 瀏覽器訪問 https://your-domain/probe.php 即可看到檢測頁面。
  3. 若需密碼保護,修改代碼開頭 $username/$password 變數。

三、精簡版探針代碼(去除介面樣式,保留核心邏輯)

<?php
// probe.php - PHPnow 風格精簡探針
header('Content-Type: text/html; charset=utf-8');

function checkExt($name, $func = null) {
    $loaded = extension_loaded($name);
    $ver = $loaded && $func && function_exists($func) ? $func() : ($loaded ? phpversion($name) : '');
    return [$loaded, $ver];
}

$info = [
    'PHP 版本' => PHP_VERSION,
    'SAPI' => PHP_SAPI,
    'php.ini' => php_ini_loaded_file() ?: '未知',
    '執行時間限制' => ini_get('max_execution_time') . 's',
    '記憶體限制' => ini_get('memory_limit'),
    '上傳上限' => ini_get('upload_max_filesize'),
    'POST 上限' => ini_get('post_max_size'),
    '時區' => date_default_timezone_get(),
    'Zend Optimizer' => checkExt('Zend Optimizer'),
    'MySQL (mysqli)' => checkExt('mysqli', 'mysqli_get_client_info'),
    'PDO MySQL' => checkExt('pdo_mysql'),
    'GD Library' => checkExt('gd', fn() => gd_info()['GD Version'] ?? ''),
    'cURL' => checkExt('curl', fn() => curl_version()['version'] ?? ''),
    'OpenSSL' => checkExt('openssl'),
    'mbstring' => checkExt('mbstring'),
    'JSON' => checkExt('json'),
    'OPcache' => checkExt('Zend OPcache', fn() => ini_get('opcache.enable') ? 'Enabled' : 'Disabled'),
];

// MySQL 連線測試
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['mysql_test'])) {
    $h = $_POST['host'] ?? 'localhost';
    $u = $_POST['user'] ?? 'root';
    $p = $_POST['pass'] ?? '';
    $db = $_POST['db'] ?? 'test';
    $mysqli = @new mysqli($h, $u, $p, $db);
    $mysqlResult = $mysqli->connect_errno ? "失敗: {$mysqli->connect_error}" : "成功 (版本: {$mysqli->server_info})";
    $mysqli->close();
}
?>
<!DOCTYPE html>
<html><head><title>PHP 環境探針</title>
<style>body{font:14px/1.6 system-ui;padding:20px}table{border-collapse:collapse;width:100%}th,td{border:1px solid #ddd;padding:8px}th{background:#f5f5f5}.ok{color:green}.fail{color:red}</style></head><body>
<h1>PHP 環境探針</h1>
<table><tr><th>項目</th><th>狀態</th><th>版本/詳情</th></tr>
<?php foreach ($info as $k => $v): 
    $isArr = is_array($v);
    $ok = $isArr ? $v[0] : true;
    $detail = $isArr ? ($v[1] ?: '已載入') : $v;
?>
<tr><td><?=$k?></td><td class="<?=$ok?'ok':'fail'?>"><?=$ok?'✓ 支援':'✗ 不支援'?></td><td><?=$detail?></td></tr>
<?php endforeach;?>
</table>

<h2>MySQL 連線測試</h2>
<form method="post">
<input name="host" placeholder="Host" value="localhost">
<input name="user" placeholder="User" value="root">
<input name="pass" type="password" placeholder="Password">
<input name="db" placeholder="Database" value="test">
<button name="mysql_test">測試連線</button>
</form>
<?php if (isset($mysqlResult)): ?><p><strong>結果:</strong> <?=$mysqlResult?></p><?php endif;?>

<p><a href="?act=phpinfo">查看 phpinfo()</a> | <a href="https://phpnow.org">PHPnow 官網</a></p>
</body></html>

四、常見問題與解答

Q1: 瀏覽器輸入 127.0.0.1/phpmyadmin 進不去?

A: 確認 phpMyAdmin 目錄存在於 htdocs/ 下;若被刪除,至官網下載最新版解壓至該目錄。帳號 root,密碼為安裝 PHPnow 時設定的 MySQL 密碼。

Q2: 寫好的 PHP 程式放哪裡?

A: htdocs/ 為網站根目錄。預設會讀取 index.html 或 index.php。建議刪除預設 index.html,將專案 index.php 放入。子目錄如 htdocs/blog/ 訪問 localhost/blog/。

Q3: 探針顯示組件「不支援」但 php.ini 已啟用?

A: 檢查 extension_dir 路徑正確、DLL 檔存在、Apache 已重啟。部分組件(如 eAccelerator)需額外編譯或下載對應版本 DLL。

Q4: 如何在生產環境安全使用探針?

A: 務必刪除或改名(如 probe_abc123.php),或加入 IP 白名單/HTTP Basic Auth。探針洩露伺服器詳細資訊,屬高風險資產。


總結: PHPnow 探針功能豐富,適合開發環境快速驗證。生產環境請換用專業監控(如 Zabbix、Prometheus+Grafana、Datadog)並移除探針檔案。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved