安装ecshop的问题处理

 在安装Ecshop的时候,会遇到几个问题:

  1.Strict Standards: Non-static method cls_image::gd_version() should not be called statically in D:\X\www\ecshop\install\includes\lib_installer.php on line 31

  

解决:找到install/includes/lib_installer.php中的第31行   return cls_image::gd_version();然后在找到include/cls_image.php中的678行,发现gd_version()方法未声明静态static,所以会出错。这时候只要:
  方法1:将function gd_version()改成static function gd_version()即可。
  方法2:或者将install/includes/lib_installer.php中的第31行return cls_image::gd_version();改成:
 $p = new cls_image();
 return $p->gd_version();
   (根据小泉经验推荐方法2)
  2.检测环境的时候提示:是否支持 JPEG是不支持的。
  

解决:查看发现有libjpeg.lib库,GD2库也有,都加载了,也都正常。查看ecshop源代码发现install/includes/lib_installer.php中第100行,JPEG写成了JPG,正确的应该是:
 $jpeg_enabled = ($gd_info['JPEG Support'] === true) ? $_LANG['support'] : $_LANG['not_support'];
     为何说Ecshop写错了,因为我打印数组$gd_info的时候,里面的键名是:JPEG Support。而$gd_info数组里的值都是直接调用系统环境变量的。
  
    3.默认时区问题:Warning: date_default_timezone_get(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in D:\X\www\ecshop\install\includes\lib_installer.php on line 225

  

解决:
    方法1,将php.ini里是date.timezone前的";"去掉,改成:date.timezone = PRC;
  方法2,在页头使用 ini_set('date.timezone','Asia/Shanghai');
  方法3,在页头使用date_default_timezone_set()设置 date_default_timezone_set('PRC'); //东八时区 echo date('Y-m-d H:i:s');
 
   4、Strict Standards: Only variables should be passed by reference in upload\includes\cls_template.php  on line 418
 第418行:$tag_sel = array_shift(explode(' ', $tag));
 

解决:
 方法1:这个是5.3以上版本的问题,应该也和配置有关 只要418行把这一句拆成两句就没有问题了 
 $tag_sel = array_shift(explode(' ', $tag));
 改成:
 $tag_arr = explode(' ', $tag);  $tag_sel = array_shift($tag_arr);
 (实验过,绝对可行) 因为array_shift的参数是引用传递的,5.3以上默认只能传递具体的变量,而不能通过函数返回值
 同理举一反三:遇到函数嵌套错误时可以分开写,错误自然解决
 解决办法 2(屏蔽错误) :
 或则如果这样配置的话: error_reporting = E_ALL | E_STRICT
 php.ini中有如下设置:
 error_reporting = E_ALL | E_STRICT
 这是说,显示那些不符合编码规范的警告(coding standards warnings)。
 改为
 error_reporting = E_ALL & ~E_NOTICE

posted @ 2013-07-01 14:30  wang_tale  阅读(558)  评论(0编辑  收藏  举报