前几天,
一个老客户,
最近升级了服务器,
php到php7,
把织梦dedecms转移到新服务器后,
不能登录后台,
让帮忙看一下。
我看了下他们的网站,
使用的是织梦V57_UTF8_SP1
前台页面是可以访问的,
是因为他们的dedecms生成了html静态页面。
但是输入织梦后台登录网址,
出现一片空白,
什么都没有。
织梦dedecms后台
主要原因是dedecms是很多年以前开发的,
都是基本php4,5时代的特性,
现在的php7跟以前的版本相比,
性能提升了很多,
但是很多代码也进行了修改,
导致不兼容以前的部分php代码。
猛击这里,
了解《升级安装php7要考虑的3个方面》
下面讲一下怎么解决这个升级php7的一系列问题。
以下操作的目录和文件,
都是相对你安装dedecms的目录
一、 打开错误信息
一片空白是无法调试的,
所以要做的第一件事,
能够输出错误信息。
打开 include/common.inc.php
找到下面的代码
//error_reporting(E_ALL);
error_reporting(E_ALL || ~E_NOTICE);
改为
error_reporting(E_ALL);
//error_reporting(E_ALL || ~E_NOTICE);
主要作用是打开错误提示。
php错误提示
这样再刷新后台,
就会有错误提示了。
解决了织梦后台空白问题后,
你再改过来就行。
二、 ‘continue’ not in the ‘loop’ or ‘switch’ context错误
你刷新后可能遇到这个错误
Fatal error: ‘continue’ not in the ‘loop’ or ‘switch’ context in ….include/common.func.php on line 49
上面表示include/common.func.php 这个文件的49行有错误,
把 continue; 删除
改为 return;
即可
织梦最新版本helper_function代码
最新版的织梦DedeCMS-V5.7-UTF8-SP2已经把这个错误修改过来。
三、 函数mysql_query()未定义
mysql_*的系列函数在php7中不能再使用,
会出现下面的错误
Fatal error: Uncaught Error: Call to undefined function mysql_query() in ….include/dedesql.class.php:152
php7中需要使用mysqli或者pdo的方式,
跟数据库通信,
更安全更高效。
解决的方法
打开文件 data/config.cache.inc.php
$cfg_mysql_type = ‘mysql’;
改为
$cfg_mysql_type = ‘mysqli’;
最新版的织梦DedeCMS-V5.7-UTF8-SP2也是这样设置的。
织梦最新版本mysql_type类型
通过上面三步,
旧的dedecms就能在php7上使用,
可以正常登录后台了。
四、 升级到最新的DedeCMS-V5.7-UTF8-SP2
看了下这个版本的织梦源代码,
应该是支持php7的,
你也可以把织梦升级到最新的版本,
前面3步就可以省略了。