一次DVBBS從ASP到PHP的轉(zhuǎn)換實例
當(dāng)前位置:點晴教程→知識管理交流
→『 技術(shù)文檔交流 』
由于服務(wù)器從Windows轉(zhuǎn)為了Linux,我不得不考慮將一個ASP的DVBBS轉(zhuǎn)到Linux平臺上。 首先想到的是Linux能否支持ASP?經(jīng)過網(wǎng)上的查詢,發(fā)現(xiàn)有個叫iASP的模塊,可以插入Apache,讓其支持ASP腳本。欣喜之下,趕忙找來iASP安裝,不料卻沒能成功,一是用這個模塊的少,其更新也慢,剛剛開始支持Apache2,還要重新編譯PHP,反正我是沒搞成功;二來這畢竟是個折中的辦法,就算成功了,估計也有很多后患,加上用的人少,遇到問題就只能靠自己了,沒有什么支持。 接下來只有考慮轉(zhuǎn)為PHP版本的DVBBS了。經(jīng)過幾天的艱苦奮斗,終算新的論壇運行起來了,不過DVBBS.PHP還是個新發(fā)布的軟件,不像其ASP兄弟那樣久經(jīng)考驗,不論是轉(zhuǎn)換程序還是論壇程序,存在的問題不少,費了我不少精神。弄完之后,長出一口氣,想著將遇到的點點滴滴記錄下來,供今后需要轉(zhuǎn)換的兄弟們參考。 先介紹一下我的工作環(huán)境。我家里有兩臺電腦,一臺Windows XP SP2,另一臺是裝的Debian Linux。我決定先在我的Linux試驗一下新論壇,然后在導(dǎo)入網(wǎng)上的真實服務(wù)器。這里需要提醒要轉(zhuǎn)換的朋友們,目前轉(zhuǎn)換程序只能在Windows平臺上使用,因為老的ASP BBS是建立在Access和MS SQL數(shù)據(jù)庫上的,MS SQL我不太清楚,因為我的老論壇數(shù)據(jù)庫是用的Access。而轉(zhuǎn)換程序訪問Access數(shù)據(jù)庫用的是ADO,這個我還真不知道Linux下怎么支持,所以那些想在Linux下運行轉(zhuǎn)換程序的朋友們,我勸你們還是不要再等了。 理一下轉(zhuǎn)換工作的思路。要轉(zhuǎn)換的數(shù)據(jù)主要有兩部分:一是數(shù)據(jù)庫,二是附件。那么我就先在自家的Linux上安裝apache+php+mysql這個黃金組合,并安裝好DVBBS.PHP。然后在我的Windows機器上安裝IIS+PHP,將轉(zhuǎn)換程序和老的Access數(shù)據(jù)庫放到Windows的PHP平臺下運行,但其中的mysql數(shù)據(jù)庫卻指向Linux機器上的mysql。轉(zhuǎn)換好后,我先在我的Linux上的DVBBS檢查轉(zhuǎn)換結(jié)果,如果沒有問題的話,將mysql的數(shù)據(jù)庫導(dǎo)出為一個sql文件,傳到真實服務(wù)器上,導(dǎo)入即可。剩下的工作就是把海量的圖片文件慢慢地往上放了。 理清了思路,我們來關(guān)注一下轉(zhuǎn)換過程中的細(xì)節(jié)。 首先安裝好apache+php+mysql,這個沒什么好說的,網(wǎng)上資料一堆一堆。 * 登錄mysql,為其創(chuàng)建兩個用戶,一個是dvbbs,限制從localhost訪問;再建一個遠(yuǎn)程訪問的用戶例如windows,這個是為了轉(zhuǎn)換程序能從遠(yuǎn)端導(dǎo)入數(shù)據(jù)。具體的命令如下: * 在Windows上安裝IIS+PHP,這個網(wǎng)上也有不少資料介紹,不過我還是碰到了問題。我裝的PHP是4.x版本的,具體安裝過程簡單描述一下:將PHP拷貝到C:PHP;將dlls目錄和isapi目錄下的dll文件拷貝到C:PHP目錄下;修改C:PHPphp.ini-dist為php.ini,并且編輯里面的extension_dir設(shè)置;將C:PHP添加到系統(tǒng)PATH,重啟計算機讓其生效;修改IIS的擴展配置,加入.php的擴展。最后有一點很重要,需要修改站點的文件安全性,要么集成Windows用戶認(rèn)證,要么將網(wǎng)頁目錄修改為允許IIS自建的用戶訪問。我就是在這最后一點搞了好久。 * 現(xiàn)在環(huán)境準(zhǔn)備好了,將轉(zhuǎn)換程序放入IIS的目錄,再將Access數(shù)據(jù)庫文件放入相應(yīng)位置,運行??墒沁@里卻發(fā)現(xiàn)了不少問題,這轉(zhuǎn)換程序?qū)懙靡蔡蛔屑?xì)了,里面很多表名的大小寫沒有注意。Access里的數(shù)據(jù)庫表名一般首字大寫,可php版的mysql數(shù)據(jù)庫表名全都是小寫,沒有辦法,只能手工將其一一改正。 * 接著進(jìn)行轉(zhuǎn)換,還是有問題,經(jīng)過仔細(xì)調(diào)試,又發(fā)現(xiàn)轉(zhuǎn)換程序的一個問題,在用戶轉(zhuǎn)換一欄,以前Access的username字段是允許相同的,而mysql的表的這個字段卻要求是唯一的。我的老數(shù)據(jù)庫由于運行了很長時間,里面出現(xiàn)了很多同名的項。沒有辦法,只能打開轉(zhuǎn)換程序輸出的出錯文件(在轉(zhuǎn)換php文件的目錄,以數(shù)字取名的),里面記錄了所有重復(fù)的用戶名,打開Access,一個一個將其糾正。 * 接下來又遇到問題,查看出錯文件,寫的是duplicate key,可是用戶名明明不一樣啊,猜想是字符集的問題,經(jīng)過半天搜索,解決的辦法是,將Linux上的mysql用gbk碼啟動,命令行如下: * 接下來以為正確了,可是轉(zhuǎn)換后,帖子卻不正常了,又搗鼓了半天,先把Access數(shù)據(jù)庫修復(fù)了一下(在Access的菜單里),結(jié)果瞎貓碰見死耗子,好了! * 可是這樣還不好,轉(zhuǎn)換后的數(shù)據(jù)庫雖然正確了,可原來的密碼卻怎么也不能登錄了,查了網(wǎng)上資料,知道mysql 4.1的改動還有一個是密碼算法的改動,無奈只得重新啟動mysql: * 接下來開始導(dǎo)出數(shù)據(jù)庫再導(dǎo)入,本以為是很簡單的任務(wù),可問題還是出在了字符集上,經(jīng)過摸索,導(dǎo)出的命令為: * 數(shù)據(jù)庫導(dǎo)入真實服務(wù)器后,進(jìn)入真實服務(wù)器的管理頁面,刷新服務(wù)器緩存,數(shù)據(jù)終于正常了。剩下的工作就是轉(zhuǎn)移海量的圖片和附件了。由于DVBBS.PHP和ASP兩個版本的目錄結(jié)果很不一樣,這就只有去看那些帖子里圖片的連接,巧妙運用Linux里的ln命令創(chuàng)建符號連接來解決這個問題了。 大致過程和碰到的問題先寫到這,關(guān)于新的PHP版本DVBBS,發(fā)現(xiàn)還是有不少問題,比如首頁調(diào)用很多內(nèi)容就無法顯示(比如帖子調(diào)用里的replyuser和replytime等)。這個只有等待動網(wǎng)的朋友們來改了。 該文章在 2012/4/25 0:32:46 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |