首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Drupal 4.6.5 安裝全記錄:UTF-8 強制配置與 PHP 5.1 兼容性修復

     編輯:MySQL 資料庫相關知識

在 PHP 5.1.x 環境下部署 Drupal 4.6.5,強制全站 UTF-8 編碼,並修復兩個核心兼容性問題。本文記錄標準化安裝與修補流程。

UTF-8 強制配置(兩步走)

  1. 修改資料庫連接初始化
    文件:includes/database.mysql.inc 約第 33 行
    添加:@mysql_query("SET NAMES UTF8;");
    作用:PHP 與 MySQL 通信全程 UTF-8,避免隱式轉碼亂碼。
  2. 修改建表 SQL 強制表字符集
    文件:database/database.mysql
    每條 CREATE TABLE 後追加:DEFAULT CHARSET=UTF8
    作用:表級默認 UTF-8,新增欄位自動繼承,存儲層編碼統一。

**後續模塊安裝/升級同理,需手動補充上述兩處。**

PHP 5.1.x 兼容性修復(兩個坑)

1. $base_url 獲取 $_SERVER['HTTP_HOST'] 失效

// 原代碼(IE 下 $_SERVER['HTTP_HOST'] 可能為空)
$base_url = 'https://' . $_SERVER['HTTP_HOST'];

// 修正:兼容 CLI/非標準環境
$base_url = isset($_SERVER['HTTP_HOST']) ? 'https://' . $_SERVER['HTTP_HOST'] : 'https://iMySQL.cn';

2. str_replace 大括號變量解析行為變化

// 原代碼:模板替換 "{title}" -> "標題"
$copy = str_replace("{$v}", "$var", $copy);

// PHP 5.1.x 將 "{$v}" 視為字面量 "{title}" 而非變量解析
// 修正:雙引號內變量不加大括號,或用單引號拼接
$copy = str_replace($v, $var, $copy);  // $v 已為 "{title}" 字符串
// 或
$copy = str_replace('{' . $key . '}', $value, $copy);

安裝驗證清單

  • 安裝向導語言選擇、數據庫配置、站點信息全程無亂碼。
  • 創建內容、分類、用戶,中文標題/正文正常顯示。
  • SHOW VARIABLES LIKE '%char%'; 確認連接/數據庫/表均為 UTF-8。
  • 啟用常用模塊(Path、Taxonomy、Menu)無報錯。

遺留風險提示

  • Drupal 4.6.x 已**停止安全更新**,生產環境**強烈建議升級至 7.x/9.x/10.x**。
  • PHP 5.1.x 早已**EOL**,存在未修補漏洞,請升級至 PHP 8.1+。
  • MySQL 4.x/5.0 早已**EOL**,請升級至 8.0+ 並使用 utf8mb4。

此記錄僅供歷史版本維護參考,**新項目請直接使用現代 Drupal + PHP + MySQL 棧**。

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