在php7+的地盘,PHP4与5的语法风格中的一些东西将被被抛弃。例如构造函数的用法,会在新的PHP7+中完全被抛弃。PHP7+将会提示一个: E_DEPRECATED的错误提示。翻遍帝国cms7.5的源代码,帝国cms的编码转换文件e/class/doiconv.php,有多处不适应php7+。可能受影响的模块:1,php7.5版本下支付宝支付提示:调试错误,请回到请求来源地,重新发起请求。错误代码 ILLEGAL_SIGN。2,帝国cms7.5php7.1以上全站搜索搜不到任何数据。3,帝国自带的首字母函数 GetInfoZm($hz) 使用PHP7.0以上无法正常使用。4,php7.1环境 ,增加栏目生成拼音乱码解决。5,新安装7.5使用php7.*环境,会员注册,重发激活邮件,找回密码,发送邮件均报错。
本着少改的原则,提出如下修改办法---
1 查找 function Chinese($dir='./')
修改为
$this->config['codetable_dir'] = $dir."../data/codetable/";
修改为
1 查找 function SMTP() {
修改为
本着少改的原则,提出如下修改办法---
1 查找 function Chinese($dir='./')
修改为
2 查找
- function __construct($dir='./')
$this->config['codetable_dir'] = $dir."../data/codetable/";
修改为
3 查找
- $this->config['codetable_dir'] = ECMS_PATH."e/data/codetable/";
在其后添加:
- /* 如果编码相同,直接返回 */
- if ($source_lang == $target_lang || $source_string == '')
- {
- return $source_string;
- }
4 查找
- return mb_convert_encoding($source_string,$target_lang,$source_lang);
替换为:
- while(list($key,$value)=each($tmp))
邮件发送模块,也有类似的问题。邮件发送模块 e/class/class.smtp.php
- foreach($tmp as $key=>$value)
1 查找 function SMTP() {
修改为
- function __construct() {
- 2查找 while(list(,$line) = @each($lines)) {
- 修改为:
- foreach($lines as $line){
- 3查找
- while(list(,$line_out) = @each($lines_out)) {
- 修改为
- foreach($lines_out as $line_out){
- 4 查找
- while(list(,$l) = @each($entries)) {
- 修改为
- foreach ($entries as $l){