最近一段时间一直没有写博文,一直都在找工作,刚找到工作,接手以后第一件事儿就是要做一个dede的移站,都是linux系统,网站转移完毕以后,却发现输入以后地址是空白的,必须在后面加login.php才可以登录,而且点击注销也是空白页。百度了很多也没有找到,现在把方法总结一下,公布给大家。
解决方式一:
原因:include/common.inc.php,data/common.inc.php被修改,保存的时候有BOM头,一般是在utf8的编码下才存在这个问题。
方法:ftp下载下来,然后用notepad++或者dw打开,选择UTF8无BOM头保存试试
解决方式二
原因:这个一般是因为环境是PHP5.4的原因,dede中的session_register被移除了
方法:
找include/userlogin.class.php里面的keepuser()函数, 把@session_register 全部改写, 虽然不知道这个@是什么意思 把@session_register($this->keepUserIDTag); 注释掉,然后改为 if (!isset($_SESSION[$this->keepUserIDTag])) 全部有6个。 如下: if (!isset($_SESSION[$this->keepUserIDTag])) //@session_register($this->keepUserIDTag); $_SESSION[$this->keepUserIDTag] = $this->userID; if (!isset($_SESSION[$this->keepUserTypeTag])) //@session_register($this->keepUserTypeTag); $_SESSION[$this->keepUserTypeTag] = $this->userType; if (!isset($_SESSION[$this->keepUserChannelTag])) //@session_register($this->keepUserChannelTag); $_SESSION[$this->keepUserChannelTag] = $this->userChannel; if (!isset($_SESSION[$this->keepUserNameTag])) //@session_register($this->keepUserNameTag); $_SESSION[$this->keepUserNameTag] = $this->userName; if (!isset($_SESSION[$this->keepUserPurviewTag])) //@session_register($this->keepUserPurviewTag); $_SESSION[$this->keepUserPurviewTag] = $this->userPurview; if (!isset($_SESSION[$this->keepAdminStyleTag])) //@session_register($this->keepAdminStyleTag); $_SESSION[$this->keepAdminStyleTag] = $adminstyle; 然后就可以登入后台了。
解决方式三:
找到:include/common.inc.php文件,打开,查找程序代码:
//error_reporting(E_ALL);
error_reporting(E_ALL || ~E_NOTICE);
替换为:
error_reporting(E_ALL);
//error_reporting(E_ALL || ~E_NOTICE);
这一步很重要,因为它会告诉你为什么变成空白的提示信息,保存之后再次进入管理后台,这个时候会发现后台会有一句话提示了,原文提示是:
Parse error: parse error in D:\wwwroot\pcpps\Web\data\config.cache.inc.php on line 44 找到之后先把上面的改回来,然后我们从错误提示上来分析。
从中我们可以现在在网站根目录的data\config.cache.inc.php on line 44有问题,然后我就把以前正常时备份过的data\config.cache.inc.php 重新上传全覆盖后问题就解决了.到此排除了dede后台登陆一片空白的问题。
(以上是原文,我的提示情况则不一样,DEDE告诉我是plugins下的run.php文件出错,于是我通过FTP一看,远程服务器上的run.php文件已经没了,于是把本地的run.php文件传上去,问题解决。)
解决方法四:在include/common.inc.php最开始添加ob_start()试试,如果不行的话就看php.ini中是否开启了output_buffering是否为on如果不是则试试改成on试试,记得重启apache(我就是用这种方法解决的)
解决方法五:某些版本的dede中可能会存在此问题,看install中的install_lock.txt是否存在,不存在的话新建试试。
时间很短,也没时间去看源代码,百度了很多都很不靠谱,误导了很多朋友,这次专门总结了一下。呵呵,希望大家可以加群252799167一起交流讨论。