修正 Debian adminer 套件的錯誤

日期: 分類: «adminer» 作者: ols3
標籤: , ,

Debian 的套件都比較舊,adminer 官網新版的 5.2.1 沒問題,但 Debian 的套件 adminer 4.8.1 版有個小 bug:

以下修正其中 script.inc.php 的錯誤:

〔PHP Warning: Undefined variable $sql in /usr/share/adminer/adminer/script.inc.php on line 15〕

--- script.inc.php.bk   2025-04-13 19:56:46.436160602 +0800
+++ script.inc.php  2025-04-13 20:01:40.604095245 +0800
@@ -1,4 +1,31 @@
 <?php
+// 檢查是否已包含必要的檔案
+if (!function_exists('connect')) {
+   require_once __DIR__ . "/include/connect.inc.php";
+}
+
+// 設定預設的資料庫類型
+if (!isset($sql)) {
+   // 從全域變數中取得資料庫類型
+   global $connection;
+   
+   // 使用 DRIVER 常量(這是 Adminer 標準做法)
+   if (defined('DRIVER')) {
+       $sql = DRIVER;
+   } elseif (isset($connection)) {
+       // 根據連線物件判斷資料庫類型
+       if (method_exists($connection, 'server_info')) {
+           $sql = 'mysql';  // MySQL 連線
+       } elseif (method_exists($connection, 'getAttribute')) {
+           $sql = 'pgsql';  // PostgreSQL 連線
+       } else {
+           $sql = 'mysql';  // 預設值
+       }
+   } else {
+       $sql = 'mysql';  // 預設值
+   }
+}
+
 header("Content-Type: text/javascript; charset=utf-8");

 if ($_GET["script"] == "db") {