1. 如何方便的在PHP7和其他版主中自由的切换帝国CMS

  //数据库设置

  $eCMS_config[‘db’][‘usedb’]=’mysql’; //数据库类型

  if(PHP_VERSION>6.9)$ecms_config[‘db’][‘usedb’]=’mysqli’;

  或者 两句合并成一句

  $ecms_config[‘db’][‘usedb’]=PHP_VERSION>6.9?’mysqli’:’mysql’;

  php7 有很多地方不再兼容低版本。对于帝国cms7.5来说,受影响最深的就是编码转换了。

  在php7的地盘,PHP4的语法风格中的一些东西将被被抛弃。例如构造函数的用法,会在新的PHP7中完全被抛弃。PHP7将会提示一个:E_DEPRECATED的错误提示。

  classfoo{

  //方法名类名相同的构造函数的用法不再兼容

  functionfoo(){

  echo’Iamtheconstructor’;

  }

  }

  ?>

  翻遍帝国cms7.的源代码,帝国cms的编码转换文件e/class/doiconv.php,有多处不适应php7

  可能受影响的模块:

  支付—

  搜索 —

  首字母生成—-

  增加栏目生成拼音乱码 —

  本着少改的原则,提出如下修改办法—

  针对 e/class/doiconv.php 文件

  2.1 查找 function Chinese($dir=’./’)

  修改为

  function __construct($dir=’./’)

  2.2 查找

  $this->config[‘codetable_dir’] = $dir.”../data/codetable/”;

  修改为

  $this->config[‘codetable_dir’] = ECMS_PATH.”e/data/codetable/”;

  2.3 查找

  /* 如果编码相同,直接返回 */

  if ($source_lang == $target_lang || $source_string == ”)

  {

  return $source_string;

  }

  在其后添加:

  //edit by jiuhecai

  return mb_convert_encoding($source_string,$target_lang,$source_lang);

  2.4 查找

  while(list($key,$value)=each($tmp))

  替换为:

  foreach($tmp as $key=>$value)

  邮件发送模块,也有类似的问题

  邮件发送模块 e/class/class.smtp.php

  问题表现:http://bbs.phome.net/ShowThread/?threadid=357544&forumid=42

  解决方案:

  修改e/class/class.smtp.php

  3.1 查找function SMTP() {

  修改为

  function __construct() {

  3.2查找 while(list(,$line) = @each($lines)) {

  修改为:

  foreach($lines as $line){

  3.3查找 while(list(,$line_out) = @each($lines_out)) {

  修改为

  foreach($lines_out as $line_out){

  3.4 查找 while(list(,$l) = @each($entries)) {

  修改为

  foreach ($entries as $l){

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。