Warning: include(/home/blog66rr/public_html/wp-content/plugins/hyper-cache/cache.php): failed to open stream: No such file or directory in /home/blog66rr/public_html/wp-content/advanced-cache.php on line 24

Warning: include(/home/blog66rr/public_html/wp-content/plugins/hyper-cache/cache.php): failed to open stream: No such file or directory in /home/blog66rr/public_html/wp-content/advanced-cache.php on line 24

Warning: include(): Failed opening '/home/blog66rr/public_html/wp-content/plugins/hyper-cache/cache.php' for inclusion (include_path='.:/opt/cpanel/ea-php70/root/usr/share/pear') in /home/blog66rr/public_html/wp-content/advanced-cache.php on line 24
discuz資料庫編碼設定,導致登入問題 – unethost無限空間虛擬主機 技術分享部落格

discuz資料庫編碼設定,導致登入問題

discuz_issue_wp

這幾天因協助移機,又接觸到discuz這一套論壇程式。
discuz 因為新版本更新及維護,程式現在是越來越肥,
加上語系編碼等問題,操作上如果沒狀況就沒問題,
一但出現問題就會相當棘手(主要是透過網站搜索不到解法)。

本次的狀況:
首先先了解一下,discuz現在是由discuz+ucenter所組成,
discuz是負責論壇主要功能;ucenter則是負責管理會員資料;
各有各的設定檔(config.php)。

當搬好網站後,透過管理員可以登入論壇,在去操作基本功能都沒問題,
本來這樣移機就會告一段落。

但是一般會員登入就出現問題了,登入會失敗;
就要重新確認是不是資料不齊全引起的?

 

網上找到的解法:
google搜索後,找到 http://www.discuz.net/thread-2982464-1-1.html
透過測試discuz 和 ucenter 通訊的解法,並重新修改了uc key,確定兩邊可以串接,
不過會員登入的問題還是無解。

窮測法:
請站長提供無法登入的帳號,並且透過論壇後台搜索,
1.確認過該帳號是存在的。
2.並去重新修改密碼試試,
結果在修改密碼後,跑出了錯誤訊息,提示是資料庫寫入異常

最後解法:
根據錯誤訊息,就把除錯範圍縮小許多;
在discuz(及ucenter)的設計裡,任何內容寫入資料庫時,
都要透過設定檔去連結資料庫

我們仔細去比對 discuz和ucenter的設定檔,
發現ucenter有一行異常,這一行原預設是:
define(‘UC_DBCHARSET’, ‘gbk’);,異常為
define(‘UC_DBCHARSET’, ‘utf8’);

後來將 utf8 改成 gbk,會員登入立即正常。

結論:
這個utf8的問題,是因為在搬移論壇時,其舊主機無法使用phpmyadmin
去匯出資料庫,舊主機php版本為5.2 mysql版本是 5.5,
導致現有phpmyadmin都無法相容。

我們的作法是,
1.改以論壇後台備份資料庫。
2.在透過論壇去還原。
中間過程中,我們需要重新安裝一套discuz,因用到不同版本語系,
才出現這個狀況,所以未來如果要操作類似的狀況,
請記得務必使用相同版本及語系,以免出現編碼問題。

另外新安裝者,建議都用utf8版,這樣也可以將編碼問題減到最少。

 

(本篇教學由unethost.com客服撰寫)

延伸閱讀:如何備份Cpanel後台安裝的套裝程式?

安裝上述的軟體,我們提供虛擬主機試用,七天滿意保證,
功能完整使用不受限制,歡迎點我申請。