Discuz

页面空白解决

打开首页是一片空白,什么都看不到。用curl -I显示HTTP/1.1 500 Internal Server Error。没有找到任何别的出错信息,非常无助。但是显示phpinfo()的test.php可以正常显示。说明php-fastcgi本身没有问题,问题在论坛本身。我试试用原始的Discuz能不能用。把原始的Discuz 7.2安装文件放到web目录,打开安装页面,提示:

对不起,请将php.ini中的short_open_tag设置为On,否则无法继续安装论坛。

于是在/etc/php.ini里面把这个打开(Amanzon EC2,默认是关掉的),杀掉所有php-cgi进程后再启动php-fastcgi,安装页面可以显示了。

论坛首页也可以显示了,但是只是出错

Error: Can't find file: './*********/[Table]sessions.frm' (errno: 13)

Errno.: 1017

我以为是[Table]这种写法无法被MySQL正确识别呢,搜索了一下别人的出错结果也是这样的,说明不是SQL命令本身的错误。后来隐隐觉得不是这一个文件的问题,到/var/lib/mysql下一看,论坛的数据库目录owner是root:root,权限是700。把ower改为mysql:mysql,重启MySQL就好了。因为论坛数据库目录是用root用户从别的主机直接拷贝过来的,所以默认owner就成了root。

这个问题是PHP和MySQL两头引起的。如果只有一边出问题都很好诊断解决了。只有PHP问题,页面会显示,但无法正确解释;只有MySQL问题,就显示上面无法找到文件的错误了。解决问题的突破点是用原始的Discuz来测试,这样消除了数据库的问题,值得以后借鉴沿用。

论坛迁移

把论坛从一个VPS迁移到另一个VPS。只需在目标端用scp -pr把/var/www/<论坛web目录>/var/lib/mysql/<论坛数据库目录>复制到新主机的相应位置就可以了。复制完后记得检查一遍各个目录的owner和mode,确保正确。设置相应的HTTPd。新主机的MySQL要保持和原主机相同的用户名、密码,或者说要和Discuz的config.inc.php中的设置一致。