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(empty($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, '/');

时间: 2024-09-21 09:07:46

DEDECMS在PHP5.4不能正常运行怎么办的相关文章

php5.4 织梦dedecms后台登录空白

  linux,php5.4, 织梦dedecms后台登录空白,原因: include/userlogin.class.php,里面有一个keepuser()函数,是用session_register来注册一个session变量,但是在php5.4中已经移除了这个功能  代码如下   把@session_register($this->keepUserIDTag);    注释掉,然后改为 if (!isset($_SESSION[$this->keepUserIDTag])) 如下: if

解决更换PHP5.4以上版本后Dedecms后台登录空白问题的方法_php技巧

把PHP的版本从5.2.14升到了5.4.15,升级完后dedecms后台却打开空白,检查了各种权限和文件,都没有问题,找来找去,原来是PHP版本函数的问题,它是用session_register来注册一个session变量,但是在php5.4以上中已经移除了这个功能解决办法: 找到include/userlogin.class.php,里面有一个keepuser()函数,它是用session_register来注册一个session变量,但是在php5.4中已经移除了这个功能,见官网介绍: 如

php5.4 dedecms后台登录空白怎么办

解决方法 就是在include/userlogin.class.php 中声明一个函数  代码如下 复制代码 function session_register() { return true; }  问题:网站被挂链接导致DEDECMS网站登录空白 这个解决办法就是把 你找到data/common.inc.php看看里面数据库链接信息有没有错,我的一个站里面这个文件都放链接,真是无语. 接下来还不行?那么看看include目录里面的common.inc.php这些带common的文件,是不是一

php5.4 织梦dedecms后台登录空白问题

linux,php5.4, 织梦dedecms后台登录空白,原因: include/userlogin.class.php,里面有一个keepuser()函数,是用session_register来注册一个session变量,但是在php5.4中已经移除了这个功能  代码如下 复制代码 把@session_register($this->keepUserIDTag);    注释掉,然后改为 if (!isset($_SESSION[$this->keepUserIDTag])) 如下: if

DEDECMS5.7在php5.4中不能正常运行解决办法

第一种是申明将此函数废弃,在include/userlogin.class.php中加入如下代码:  代码如下 复制代码 function session_register() {  return true; } DEDECMS论坛中版主吕轻侯给出的方法是在/include/helpers/util.helper.php页中插入如下代码:  代码如下 复制代码 // Fix for removed Session functions function fix_session_register()

Windows Server 2012 搭建PHP+MySQL环境安装DedeCMS系统

随着Windows 8的发布,其服务器版本Windows Server 2012也相继推出,本篇将全面介绍如何在Windows Server 2012搭建安装DedeCMS所需要的PHP+MySQL环境,同时也将介绍如何在Windows Server 2012中设定服务器站点的安全. 1.添加IIS服务器角色 点击任务栏左下角的"服务器管理器",在"安装类型"选项卡中选择"基于角色或基于功能的安装",服务器选择中直接选择当前服务器即可,在服务器角

用 PHP5 轻松解析 XML

php5|xml 用 sax 方式的时候,要自己构建3个函数,而且要直接用这三的函数来返回数据,要求较强的逻辑.在处理不同结构的 xml 的时候,还要重新进行构造这三个函数,麻烦! 用 dom 方式,倒是好些,但是他把每个节点都看作是一个 node,,操作起来要写好多的代码,麻烦! 网上有好多的开源的 xml 解析的类库,以前看过几个,但是心里总是觉得不踏实,感觉总是跟在别人的屁股后面. 这几天在搞 Java,挺累的,所以决定换换脑袋,写点 PHP 代码,为了防止以后 XML 解析过程再令我犯难

用php5轻松解析xml

php5|xml 用sax方式的时候,要自己构建3个函数, 而且要直接用这三的函数来返回数据, 要求较强的逻辑. 在处理不同结构的xml的时候, 还要重新进行构造这三个函数,麻烦! 用dom方式,倒是好些,但是他把每个节点都看作是一个node, 操作起来要写好多的代码, 麻烦! 网上有好多的开源的xml解析的类库, 以前看过几个, 但是心里总是觉得不踏实, 感觉总是跟在别人的屁股后面. 这几天在搞java, 挺累的, 所以决定换换脑袋, 写点php代码, 为了防止以后xml解析过程再令我犯难,

PHP7 RC7 Release对比PHP5.6快速排序20000数据性能体验以及新语法尝鲜

最近Zend的PHP7已经 处于最后的BUG修复阶段,目前 已经更新RC7,对于Zend官方的说法PHP7的性能大约相比PHP5系列版本 提高2倍以上,增加了一些新的语法,摒弃了PHP5的一些影响性能的因素,主要增加了以下Features . Improved performance: PHP 7 is up to twice as fast as PHP 5.6 性能比5.6提高2倍 Consistent 64-bit support 64位一致性支持Many fatal errors are