频道栏目
首页 > 程序开发 > Web开发 > PHP教程 > 开源程序 > discuz > 正文
Discuz X3在Linux系统安装失败的解决办法
2016-01-07 15:09:09           
收藏   我要投稿

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

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

但是无法使用,在公司自有的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配置有些不同吧

resourcemysql_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_SPACEMYSQL_CLIENT_INTERACTIVE。进一步信息见MySQL 客户端常量。

点击复制链接 与好友分享!回本站首页
相关TAG标签 办法 系统
上一篇:Discuz X3门户文章页列表页去掉相关分类的方法
下一篇:Discuz X3后台和UCenter的邮件设置方法
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站