Bug Tracking System § Mantis支援中文UTF-8編碼之設定教學(PHP + MYSQL)


以臭蟲追蹤(Bug Tracking System)的相關軟體來說,Mantis(螳螂)和Bugzilla是當中的佼佼者,蠻多專案都會用這二套Bug Tracker來協助開發(我用來當知識管理系統),其安裝方法在官網或是網路上都有很多教學文章,在此就不多說明,本篇最主要的目的在於如何讓Mantis的免安裝版本,支援中文字UTF-8的編碼,因為在Mantis官網中的「免安裝」版本,介面上雖可支援中文,但是一寫入資料,中文字就會變成「?」號,讓人奇檸子不是很好,雖然網路上有許多文章在討論如何支援UTF-8,可惜版本和我喜歡的免安裝版有點出入,只好上網詢問高手,順便自己動手修改看看,以下便是我簡單的修改方法,有需要的人可以參考看看,在此先聲明MYSQL、PHP我是一竅不通,所有資料都是網路查詢及旁敲側擊而來,有錯誤的或有更好的方法,請不吝告之。

首先,簡易說明一下免安裝版的使用方法:目前我測試的版本為:v1.1.1,請至SourceForge我的空間下載,下載後直接解壓縮即可,目錄結構上儘量不要有奇怪的名稱,以英文為佳,解開後根據readme.txt的說明,執行「imstart.cmd」後用IE連線至「http://localhost:8008/」就可以看到Mantis的登錄畫面了,預設的帳號、密碼是「administrator/root」。

由上圖可以看見登入後整個介面是英文,若你往後都是使用英文字,那以下過程可以不用看,開始快樂的使用就可以了,若想使用中文字,則請繼續用功下去吧。

切換至中文介面

範例直接以使用者administrator為例,登入後請點選上方的「Manage」,於「Manage Users」中點選「administrator」進入帳號的參數設定畫面,在Language一項中選擇「chinese_traditional」,下次再登入時介面就會呈現中文介面。

如何支援中文字資料

在設定之前,可以先試試看是否輸入資料後,會變成「?」,以我的狀況來說是這樣的,要解決這個問題,需做下列步驟:

  1. 建立一個支援UTF-8的資料庫
    (a) 我的作法並不是在舊有的資料庫中更改設定,而是直接建立一個新的資料庫,首先把MySQL的server執行起來,直接點選「imstart.cmd」就可以了,裡面的指令會自動執行mysqld.exe,接著在「命令提示字元」中,將目錄切換到「Mantis\server\mysql-4.1.16-win32\bin」,使用mysql.exe連線到MySQL的Server:
mysql -h localhost -P 3360

-h 後面接Server的位址,用預設的localhost即可,-P 後面接連接埠,預設是3360,此時若可以看見「mysql>」符號,表示已經成功連接上了,如下圖所示。



(b) 鍵入「show databases;」來看目前的資料庫狀況

mysql> show databases;

(c) 鍵入「create database 資料庫名稱 character set = utf8;」以建立一個可支援UTF-8的資料庫,建立後要看有沒有成功,使用(b)的show databases再看一次就知道了,此範例的資料庫名稱為「jinndb」。

mysql> create database jinndb character set = utf8;

(d) 鍵入「use 資料庫名稱;」,來使用新建的資料庫。

mysql> use jinndb;
  • 給此資料庫建立一個有權限的使用者
    (a) 鍵入「grant 權限 on 資料庫 to username@hostname identified by ‘password’;」,此指令可以建立來自hostname的使用者username的帳號,密碼為password,並給予全部的權限,以下範例是建立使用者「jinn」,密碼為「jinn123」,進一步的說明可參考這裡

    mysql> grant all privileges on *.* to jinn@localhost 
    identified by 'jinn123';
  • 變更Mantis使用的資料庫
    (a) 在IE輸入「http://localhost:8008/admin/install.php」,可進入Mantis資料庫的安裝頁面:

    在這些欄位中,帳號密碼都使用之前建立的「jinn/ jinn123」即可,重要的是把資料庫名稱換成「jinndb」,接著按「Install/Upgrade Database」按鈕,此時會發現系統出現以下的錯誤訊息:

    BAD 
    Does administrative user have access to the database?  
    (Client does not support authentication protocol 
    requested by server; consider upgrading MySQL client)

    這邊的資訊得知,這是MySQL 4.1以上使用新的密碼驗証機制,而PHP4尚未支援,解決的方法為改變其密碼格式,指令為「set password for usrname@hostname = old_password(‘密碼’)」:

    mysql> set password for jinn@localhost =
    old_password('jinn123');

    (b) 設定完後,再試一遍,剛剛的訊息就會消失,不過出現了另一個 Write Configuration Files(s)的錯誤訊息:

    Please add the following lines to 
    D:\MyData\Mantis\root\mantis\config_inc.php
    before continuing to the database upgrade check:

    提示要更新「Mantis\root\mantis\config_inc.php」這個檔案,只要按照說明把下面的語法貼到config_inc.php即可,最後再重試一遍應該可以成功的安裝了。

    <?php
    $g_hostname='localhost:3360';
     $g_db_type='mysql';
     $g_database_name='jinndb';
     $g_db_username='jinn';
    $g_db_password='jinn123';
     ?>
  • 看到這一步代表大功告成了,建議連線測試時,重新啟動Mantis (imstart.cmd),確保有載入新的設定,支援中文字的畫面如下:

註:以上方法在專案名稱、標題、內容等皆可使用中文,不過標籤部分就會失敗,不知道是本來就不支援,還是我不會設定的原因,個人猜測應該是設定問題,還好Mantis的搜尋功能還不錯,可以直接用來替代Tag,若有人知道怎麼設中文標籤的話,記得留言告訴我一聲,謝謝您。

參考資料:
黑社會読み物小舖 – Mantis
MySQL 4.1 + phpMyAdmin 問題
MySQL常用指令及帳戶管理

Technorati Tag : , ,