LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

一次DVBBS从ASP到PHP的转换实例

admin
2012年4月25日 0:32 本文热度 3593
由于服务器从Windows转为了Linux,我不得不考虑将一个ASPDVBBS转到Linux平台上。

首先想到的是Linux能否支持ASP?经过网上的查询,发现有个叫iASP的模块,可以插入Apache,让其支持ASP脚本。欣喜之下,赶忙找来iASP安装,不料却没能成功,一是用这个模块的少,其更新也慢,刚刚开始支持Apache2,还要重新编译PHP,反正我是没搞成功;二来这毕竟是个折中的办法,就算成功了,估计也有很多后患,加上用的人少,遇到问题就只能靠自己了,没有什么支持。

接下来只有考虑转为PHP版本的DVBBS了。经过几天的艰苦奋斗,终算新的论坛运行起来了,不过DVBBS.PHP还是个新发布的软件,不像其ASP兄弟那样久经考验,不论是转换程序还是论坛程序,存在的问题不少,费了我不少精神。弄完之后,长出一口气,想着将遇到的点点滴滴记录下来,供今后需要转换的兄弟们参考。

先介绍一下我的工作环境。我家里有两台电脑,一台Windows XP SP2,另一台是装的Debian Linux。我决定先在我的Linux试验一下新论坛,然后在导入网上的真实服务器。这里需要提醒要转换的朋友们,目前转换程序只能在Windows平台上使用,因为老的ASP BBS是建立在AccessMS SQL数据库上的,MS SQL我不太清楚,因为我的老论坛数据库是用的Access。而转换程序访问Access数据库用的是ADO,这个我还真不知道Linux下怎么支持,所以那些想在Linux下运行转换程序的朋友们,我劝你们还是不要再等了。

理一下转换工作的思路。要转换的数据主要有两部分:一是数据库,二是附件。那么我就先在自家的Linux上安装apache+php+mysql这个黄金组合,并安装好DVBBS.PHP。然后在我的Windows机器上安装IIS+PHP,将转换程序和老的Access数据库放到WindowsPHP平台下运行,但其中的mysql数据库却指向Linux机器上的mysql。转换好后,我先在我的Linux上的DVBBS检查转换结果,如果没有问题的话,将mysql的数据库导出为一个sql文件,传到真实服务器上,导入即可。剩下的工作就是把海量的图片文件慢慢地往上放了。

理清了思路,我们来关注一下转换过程中的细节。

首先安装好apache+php+mysql,这个没什么好说的,网上资料一堆一堆。

*   登录mysql,为其创建两个用户,一个是dvbbs,限制从localhost访问;再建一个远程访问的用户例如windows,这个是为了转换程序能从远端导入数据。具体的命令如下:
grant all on *.* to windows@% identified by “windows”;

*   在Windows上安装IIS+PHP,这个网上也有不少资料介绍,不过我还是碰到了问题。我装的PHP4.x版本的,具体安装过程简单描述一下:将PHP拷贝到C:PHP;将dlls目录和isapi目录下的dll文件拷贝到C:PHP目录下;修改C:PHPphp.ini-distphp.ini,并且编辑里面的extension_dir设置;将C:PHP添加到系统PATH,重启计算机让其生效;修改IIS的扩展配置,加入.php的扩展。最后有一点很重要,需要修改站点的文件安全性,要么集成Windows用户认证,要么将网页目录修改为允许IIS自建的用户访问。我就是在这最后一点搞了好久。

*   现在环境准备好了,将转换程序放入IIS的目录,再将Access数据库文件放入相应位置,运行。可是这里却发现了不少问题,这转换程序写得也太不仔细了,里面很多表名的大小写没有注意。Access里的数据库表名一般首字大写,可php版的mysql数据库表名全都是小写,没有办法,只能手工将其一一改正。

*   接着进行转换,还是有问题,经过仔细调试,又发现转换程序的一个问题,在用户转换一栏,以前Accessusername字段是允许相同的,而mysql的表的这个字段却要求是唯一的。我的老数据库由于运行了很长时间,里面出现了很多同名的项。没有办法,只能打开转换程序输出的出错文件(在转换php文件的目录,以数字取名的),里面记录了所有重复的用户名,打开Access,一个一个将其纠正。

*   接下来又遇到问题,查看出错文件,写的是duplicate key,可是用户名明明不一样啊,猜想是字符集的问题,经过半天搜索,解决的办法是,将Linux上的mysqlgbk码启动,命令行如下:
mysqld_safe --user=mysql --default-character-set=gbk &
关于如何用gbk字符集启动mysql,网上有很多说明,也可以在my.ini中设置,如果你用的是mysql 4.1版本以上,就不得不先为字符集问题伤伤脑筋。

*   接下来以为正确了,可是转换后,帖子却不正常了,又捣鼓了半天,先把Access数据库修复了一下(在Access的菜单里),结果瞎猫碰见死耗子,好了!

*   可是这样还不好,转换后的数据库虽然正确了,可原来的密码却怎么也不能登录了,查了网上资料,知道mysql 4.1的改动还有一个是密码算法的改动,无奈只得重新启动mysql
mysqld_safe --user=mysql --default-character-set=gbk --old-passwords &
采用老密码算法启动mysql,再次转换,这回终于成功了。别忘了进入管理页面去刷新缓存,否则帖子的名字就都变成了“”。

*   接下来开始导出数据库再导入,本以为是很简单的任务,可问题还是出在了字符集上,经过摸索,导出的命令为:
mysqldump --default-character-set=gbk –p dvbbs > dvbbs_gbk.sql
导入的命令为:
mysql --default-character-set=gbk –p dvbbs < dvbbs_gbk.sql

*   数据库导入真实服务器后,进入真实服务器的管理页面,刷新服务器缓存,数据终于正常了。剩下的工作就是转移海量的图片和附件了。由于DVBBS.PHPASP两个版本的目录结果很不一样,这就只有去看那些帖子里图片的连接,巧妙运用Linux里的ln命令创建符号连接来解决这个问题了。

大致过程和碰到的问题先写到这,关于新的PHP版本DVBBS,发现还是有不少问题,比如首页调用很多内容就无法显示(比如帖子调用里的replyuserreplytime等)。这个只有等待动网的朋友们来改了。


该文章在 2012/4/25 0:32:46 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved