热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

DiscuzX3在Linux系统安装失败的解决办法

公司使用的是聚石塔服务器前天搭建论坛时,安装过程正常完成但是无法使用,在公司自有的linux服务器下,安装之后就没有任何问题于是开始通过读discuz源码,来查找问题所在很快发现,数据看连接的地方有些异常,连接之后,无法正常执行sql在/source/clas

公司使用的是聚石塔服务器

前天搭建论坛时,安装过程正常完成

但是无法使用,在公司自有的linux服务器下,安装之后就没有任何问题

于是开始通过读discuz源码,来查找问题所在

很快发现,数据看连接的地方有些异常,连接之后,无法正常执行sql

在/source/class/db下面的db_driver_mysql.php文件 81-85行为如下代码


if($pconnect) {
        $link = @mysql_pconnect($dbhost, $dbuser, $dbpw, MYSQL_CLIENT_COMPRESS);
} else {
        $link = @mysql_connect($dbhost, $dbuser, $dbpw, 1, MYSQL_CLIENT_COMPRESS);
}

mysql_connect()函数使用了第四个和第五个参数

直接删掉这两个参数之后,访问网址,不会出现一直加载的情况了

但是样式和JS都没有加载到

再次源码调试

/source/class/discuz中discuz_application.php文件中,第66行加载$this->_init_setting()之后

很多默认的参数都没有加载成功

这个方法调用的是/source/class/table中的table_common_setting.php文件中的fetch_all方法

于是查看数据表common_setting,里面的配置比正确安装之后的少了很多

联想到前面mysql的问题,应该是在执行安装时,这些配置数据没有写入数据库

所以在执行安装之前,就去掉mysql_connect的那两个参数

重新安装discuz,问题得到解决。

后续查阅了相关资料:mysql_connect()

还是没有搞清楚,这两个参数是怎么使得在那台服务器上连接出问题的。

可能是那台服务器上mysql的ini配置有些不同吧

resource mysql_connect ([ string $server [, string $username [, string $password [, bool $new_link [, int $client_flags ]]]]] )

new_link

如果用同样的参数第二次调用 mysql_connect(),将不会建立新连接,而将返回已经打开的连接标识。参数 new_link 改变此行为并使 mysql_connect() 总是打开新的连接,甚至当 mysql_connect() 曾在前面被用同样的参数调用过。

client_flags

client_flags 参数可以是以下常量的组合:MYSQL_CLIENT_SSLMYSQL_CLIENT_COMPRESSMYSQL_CLIENT_IGNORE_SPACE 或 MYSQL_CLIENT_INTERACTIVE。进一步信息见MySQL 客户端常量。


推荐阅读
author-avatar
AAAAaaaa叶子
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有