DEDECMS在PHP5.4不能正常运行的解决方法

所属分类: CMS教程 / dedecms 阅读数: 1418
收藏 0 赞 0 分享

本文实例讲述了DEDECMS在PHP5.4不能正常运行的解决方法。分享给大家供大家参考。具体分析如下:

PHP5.4是公开发行的PHP程式最新版本,其执行速度和内存占用等相比PHP5.3而言有10%~30%的性能提升,所以笔者也一直想在实际环境中试运行PHP5.4(PHP5.4目前最新的版本为5.4.9)。

棘手的是与PHP5.2升级到PHP5.3有所不同的是,从5.3到5.4之间似乎变化不少,这也造成了笔者在将DEDECMS系统迁移到PHP5.4.x平台的时候出现了前台500错误后台直接空白的情况,当时也没有深究便换回PHP5.3了。

最近仔细查了下相关资料,发现主要是因为目前DEDECMS代码中使用了PHP5.4中弃用的一些函数,主要如下:

allow_call_time_pass_reference、define_syslog_variables、highlight.bg、register_globals、register_long_arrays、magic_quotes、safe_mode、zend.ze1_compatibility_mode、session.bug_compat42、session.bug_compat_warn、session_register以及 y2k_compliance

其中造成DEDECMS5.7无法正常运行的函数便是session_register。

网上实测有效的方法有如下两种:

第一种方法申明将此函数废弃,在include/userlogin.class.php中加入如下代码:

复制代码
代码如下:
function session_register()
{
return true;
}

第二种方法是该该页中的函数代码替换,被替换代码大致在287到308行之间,代码如下:

复制代码
代码如下:
@session_register($this->keepUserIDTag);
$_SESSION[$this->keepUserIDTag] = $this->userID;
@session_register($this->keepUserTypeTag);
$_SESSION[$this->keepUserTypeTag] = $this->userType;
@session_register($this->keepUserChannelTag);
$_SESSION[$this->keepUserChannelTag] = $this->userChannel;
@session_register($this->keepUserNameTag);
$_SESSION[$this->keepUserNameTag] = $this->userName;
@session_register($this->keepUserPurviewTag);
$_SESSION[$this->keepUserPurviewTag] = $this->userPurview;
@session_register($this->keepAdminStyleTag);
$_SESSION[$this->keepAdminStyleTag] = $adminstyle;
PutCookie('DedeUserID', $this->userID, 3600 * 24, '/');
PutCookie('DedeLoginTime', time(), 3600 * 24, '/');

替换为如下代码:

复制代码
代码如下:
global $admincachefile,$adminstyle;
if(emptyempty($adminstyle)) $adminstyle = 'dedecms';
$_SESSION[$this->keepUserIDTag] = $this->keepUserIDTag;
$_SESSION[$this->keepUserIDTag] = $this->userID;
$_SESSION[$this->keepUserTypeTag] = $this->keepUserTypeTag;
$_SESSION[$this->keepUserTypeTag] = $this->userType;
$_SESSION[$this->keepUserChannelTag] = $this->keepUserChannelTag;
$_SESSION[$this->keepUserChannelTag] = $this->userChannel;
$_SESSION[$this->keepUserNameTag] = $this->keepUserNameTag;
$_SESSION[$this->keepUserNameTag] = $this->userName;
$_SESSION[$this->keepUserPurviewTag] = $this->keepUserPurviewTag;
$_SESSION[$this->keepUserPurviewTag] = $this->userPurview;
$_SESSION[$this->keepAdminStyleTag] = $this->keepAdminStyleTag;
$_SESSION[$this->keepAdminStyleTag] = $adminstyle;
PutCookie('DedeUserID', $this->userID, 3600 * 24, '/');
PutCookie('DedeLoginTime', time(), 3600 * 24, '/');

希望本文所述对大家的dedecms建站有所帮助。

更多精彩内容其他人还在看

织梦dedecms 忘记管理员后台密码的解决技巧

好多情况下,由于各种原因忘记了dedecms的密码,给大家带来了很大的麻烦,官方也没有出直接修改密码的东西可能是为了安全考虑吧。下面是最根本的方法,需要的朋友可以参考下。
收藏 0 赞 0 分享

取消dedecms 留言簿的验证码的方法

有时候感觉加了验证码,为互动带来了麻烦,如果垃圾广告很少的话可以取消,下面是具体的实现方法。
收藏 0 赞 0 分享

DEDECMS相关文章不相关的解决办法

关键字描述:相关 办法 解决 文章   " < row-> ss &rsquo DEDE的相关文章完全不相关,有朋友在DEDE官方放出根据TAG显示相关文章,也是很不错,可惜我在根据那边文章改DEDE代码后老是不行,可能是能力有限,当然也有可能是代
收藏 0 赞 0 分享

Dedecms默认模板用户评论扩展

关键字描述:评论 扩展 用户 模板 默认 " < > class 登录 Dedecms默认模板内容页评论处有个不足的地方,就是用户登录之后还会出现那个提示用户登录的框子,天涯这里给出了以下解决方案,如果喜欢的朋友可以拿去。 首先我们给内容页模板写上一段
收藏 0 赞 0 分享

DEDE取消发表文章时去掉验证码

关键字描述:dede 取消 发表文章 验证码 网站 关闭 后台 我的一个DEDECMS的网站里面所有的东西都是自己发布的,所以不需要验证码! DEDE默认是有验证码的,而且后台是不能关闭的,所以我们需要对代码动下手术拉! 今天,小青就在xkzzz谈一谈如何将d
收藏 0 赞 0 分享

【Arclist 标记】--Dedecms模板标签代码

关键字描述:标签 代码 模板 标记 表示 文档 < " 属性 orderby 这个标记是DedeCms最常用的一个标记,也叫自由列表标记,其中 hotart、coolart、likeart、ar
收藏 0 赞 0 分享

Dedecms实时更新热门关键字!

关键字描述:关键字 热门 更新 实时 标记 Copy code < subday num Dedecms实时更新热门关键字其实实现起来很简单,可是很多人不知道。 登录到dedecms后台 后台:自定义宏标记 添加一标记: 所属栏目:默认不用动 标记名称:ke
收藏 0 赞 0 分享

从零学DedeCms模板教程

关键字描述:教程 模板 < 模版 代码 标记 &mdash 制作 field:title/ DedeCms真是一个非常棒的系统,我从接触到现在一年时间再也没有理会其他CMS系统,推荐刚开始建站或准备换程序的朋友使用DedeCms系统。就像柏拉图说的:利剑已出,天下必乱
收藏 0 赞 0 分享

dedecms制作的admin5的评论效果

dedecms制作的admin5的评论效果 哪位朋友修改后了 请出个演示 以便让其他朋友提供参考 谢谢 声明:大家下载后请先在本地调式,确定无误后再使用。请备份原文件 把附件一覆盖到 主目录plus文件夹下; 把附件二覆盖到
收藏 0 赞 0 分享

dede解决两个标题之间的空格问题

关键字描述:空格 问题 之间 标题 解决 两个 显示 dedecms 一行 没有 问题: dedecms想在一行显示多个标题,比如两个或者三个,标题之间不需要空格,但是dedecms默认的一行显示的标题间有空格 修改./include/inc_arcpart_view.
收藏 0 赞 0 分享
查看更多