前几天,
一个老客户,
最近升级了服务器,
php到php7,
把织梦dedecms转移到新服务器后,
不能登录后台,
让帮忙看一下。

我看了下他们的网站,
使用的是织梦V57_UTF8_SP1
前台页面是可以访问的,
是因为他们的dedecms生成了html静态页面。

但是输入织梦后台登录网址,
出现一片空白,
什么都没有。

dedecms在php7下的使用方法,织梦dedecsm后台一片空白的解决方法-LMLPHP

织梦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);
主要作用是打开错误提示。

dedecms在php7下的使用方法,织梦dedecsm后台一片空白的解决方法-LMLPHP

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;
即可

dedecms在php7下的使用方法,织梦dedecsm后台一片空白的解决方法-LMLPHP

织梦最新版本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也是这样设置的。

dedecms在php7下的使用方法,织梦dedecsm后台一片空白的解决方法-LMLPHP

织梦最新版本mysql_type类型

通过上面三步,
旧的dedecms就能在php7上使用,
可以正常登录后台了。

四、 升级到最新的DedeCMS-V5.7-UTF8-SP2

看了下这个版本的织梦源代码,
应该是支持php7的,
你也可以把织梦升级到最新的版本,

前面3步就可以省略了。

05-01 02:38