最近用smthbbs-1.1.1自带的四个小程序转换FireBire v1126的数据到smthbbs,
转换完后出现了网页界面的所有CGI程序(如bbsleft)不能运行的情况,
例如从首页匿名登陆后到分类讨论区页面,左面的菜单栏变成了“Internal
Server Error的错误信息,apache的记录文件error.log中有条目:
Error! shmat 2 error! key = e73.: Permission denied
[Sat Oct 4 20:08:36 2003] [error] [client 202.207.219.252]
Premature end of script headers: /var/www/cgi-bin/bbs/bbsleft
因为不会调试apache中运行的CGI程序,只好用笨办法试验。结果发现新装的
smthbbs网页没有问题,下一步把fb2k的.PASSWD文件用convpasswd和chlevel
转换后替换原有的.PASSWDS文件后就出问题,仔细核对了两个版本BBS程序
userec和userdata结构(userdata只有水木有)的区别,觉得convpasswd程序
没有问题,再看chlevel.c,觉得它既打开PASSWDS文件读数据,又用
substitute_record替换数据很别扭,不知道是否会引起冲突,于是将第14行
改为:
rec = fopen(BBSHOME "/.PASSWDS.NEW", "rb");
^^^^
就是从convpasswd产生的文件.PASSWDS.NEW读数据,转换后替换.PASSWDS文件,
这样似乎稳妥一些,具体区别搞不清楚。
结果密码文件转换完后重起机器,所有CGI都可以用了。
水木站务组能否看一下这个问题?如果我的办法有道理,就修改一下chlevel.c
吧。
--
FROM 218.26.243.165