研究了好幾週 爬了好幾篇文章 總算可以完整轉換成功 但是還是有些BUG要確認
目前得知 轉換過去的 Private Message功能好像還有些問題.....
這邊先紀錄我怎麼轉換過來的過程 便於我日後回憶
主要分成兩部分
第一部分:轉換資料庫
環境:Win10 or 7 (都可以使用)
軟體:xampp-win64-7.0.2-installer (最新版才不會出錯!!)
轉換程式:mysql-connector-odbc-5.2.5-winx64 (依照電腦架構選擇對應的即可)
資料庫位置: 論壇檔案底下\admin\database
如何轉換將 原本的架構 mdb 轉換到 mysql 我參考這篇文章
點我連結
轉換過程十分順利
需要轉換的論壇大約有20萬筆回覆 2萬多比主題....營運快10年的論壇 Orz
但是資料都沒有遺失 可以完美的轉換上去
轉換上去之後 再匯出SQL檔案
匯出後 我們必須先做修改才能 匯入舊版的資料庫中
使用 sublime text 打開 SQL檔案 (我的大約50mb左右)
打開約需要3分鐘吧 打開找到 utf8mb4 改成 utf8 即可完成此部分
第二部分:轉換架構
環境:Win10 or 7 or Windows server 2003 (都可以使用)
軟體:xampp-win32-1.7.1-installer (一定要用舊版轉換程式才不會出錯!!)
論壇軟體:phpBB-3.0.RC1
這邊先安裝舊版之後再升級 因為原作者轉換程式是設計給 phpBB-3.0.RC1
參考連結
下載部落格中作者提供的附件 將檔案解壓縮出來會有四個檔案
functions-webwiz-hash.php
functions_webwiz.php
convert_webwiz.php
auth_db.php
轉換過程將
functions_webwiz.php
convert_webwiz.php
這兩個檔案提出放到
C:\xampp\htdocs\phpBB3\install\convertors (參考phpbb2 to phpbb3)
接著就轉換吧!!!!!我轉一次大概6小時~12小時左右(依照CPU和RAM有差! 我轉很多次..)
轉換完成後如果不希望使用者重新變更密碼 那必須將
functions-webwiz-hash.php
auth_db.php
各別放在不同的地方
functions-webwiz-hash.php 放置於
C:\xampp\htdocs\phpBB3\includes
auth_db.php 放置於
C:\xampp\htdocs\phpBB3\includes\auth
然後移除 C:\xampp\htdocs\phpBB3 底下的 install 資料夾即可看見論壇
登入一下原本的帳號確認是否無誤
如果忘記Admin帳號 可以透過下列方法:
打開mysql資料庫 然後選擇 phpbb3的資料庫 新增一段語法
INSERT INTO phpbb_users (user_type, group_id, username, username_clean, user_regdate, user_password, user_email, user_lang, user_style, user_rank, user_colour, user_posts, user_permissions, user_ip, user_birthday, user_lastpage, user_last_confirm_key, user_post_sortby_type, user_post_sortby_dir, user_topic_sortby_type, user_topic_sortby_dir, user_avatar, user_sig, user_sig_bbcode_uid, user_from, user_icq, user_aim, user_yim, user_msnm, user_jabber, user_website, user_occ, user_interests, user_actkey, user_newpasswd) VALUES (3, 5, 'Admin1', 'admin1', 0, '21232f297a57a5a743894a0e4a801fc3', 'admin@yourdomain.com', 'en', 1, 1, 'AA0000', 1, '', '', '', '', '', 't', 'a', 't', 'd', '', '', '', '', '', '', '', '', '', '', '', '', '', '');
帳號:Admin1
密碼:admin
即可進行管理
=======
升級過程
無法直接直升 3.0.12 會錯.........
因此必須先升級到3.0.RC2 再升級到 phpBB-3.0.0 最後才可以升級到 3.0.12
參考點我
=======
筆記到此 後續還再測試
Web wiz 7.9 to phpbb3 3.0.12 轉換
版主: 版主管理群
Re: Web wiz 7.9 to phpbb3 3.0.12 轉換
Private Message 重新啟用模組即可恢復正常
Search 功能異常 需要重建 index 重建後也都正常了
這邊記得要選用 Native 而不是 Mysql (我自己測試用Native才會正常..)
登入功能異常 原先使用的auth_db.php 只能用於3.0.1.rc
由於升上 3.0.12的關係 必須手動去修改程式碼
改成
// Check password ...
// added for webwiz conversion
// HashEncode is webwiz function.
global $phpbb_root_path, $phpEx;
require($phpbb_root_path . 'includes/functions-webwiz-hash.' . $phpEx);
if (!$row['user_pass_convert'] && (phpbb_check_hash($password, $row['user_password'])
or HashEncode($password.$row['salt'])==$row['user_password'] ))
{
// Check for old password hash...
if (strlen($row['user_password']) == 32)
{
$hash = phpbb_hash($password);
// Update the password in the users table to the new format
$sql = 'UPDATE ' . USERS_TABLE . "
SET user_password = '" . $db->sql_escape($hash) . "',
user_pass_convert = 0
WHERE user_id = {$row['user_id']}";
$db->sql_query($sql);
$row['user_password'] = $hash;
}
$sql = 'DELETE FROM ' . LOGIN_ATTEMPT_TABLE . '
WHERE user_id = ' . $row['user_id'];
$db->sql_query($sql);
if(phpbb_check_hash($password, $row['user_password'])!= true)
{
// Unconverted password
$sql = 'UPDATE ' . USERS_TABLE . '
SET user_password = "'.md5($password).'"
WHERE user_id = ' . $row['user_id'];
$db->sql_query($sql);
}
大概是這樣
Search 功能異常 需要重建 index 重建後也都正常了
這邊記得要選用 Native 而不是 Mysql (我自己測試用Native才會正常..)
登入功能異常 原先使用的auth_db.php 只能用於3.0.1.rc
由於升上 3.0.12的關係 必須手動去修改程式碼
改成
// Check password ...
// added for webwiz conversion
// HashEncode is webwiz function.
global $phpbb_root_path, $phpEx;
require($phpbb_root_path . 'includes/functions-webwiz-hash.' . $phpEx);
if (!$row['user_pass_convert'] && (phpbb_check_hash($password, $row['user_password'])
or HashEncode($password.$row['salt'])==$row['user_password'] ))
{
// Check for old password hash...
if (strlen($row['user_password']) == 32)
{
$hash = phpbb_hash($password);
// Update the password in the users table to the new format
$sql = 'UPDATE ' . USERS_TABLE . "
SET user_password = '" . $db->sql_escape($hash) . "',
user_pass_convert = 0
WHERE user_id = {$row['user_id']}";
$db->sql_query($sql);
$row['user_password'] = $hash;
}
$sql = 'DELETE FROM ' . LOGIN_ATTEMPT_TABLE . '
WHERE user_id = ' . $row['user_id'];
$db->sql_query($sql);
if(phpbb_check_hash($password, $row['user_password'])!= true)
{
// Unconverted password
$sql = 'UPDATE ' . USERS_TABLE . '
SET user_password = "'.md5($password).'"
WHERE user_id = ' . $row['user_id'];
$db->sql_query($sql);
}
大概是這樣