ecshop 解决在php版本大于5.3环境中安装ecshop出现的错误提示,例如"cls_image::gd_version()"等

摘要:ecshop 解决安装过程中出现的错误提示...

作者:LoveCode标签:ecshop,安装,错误提示

Ecshop安装过程中的的问题:cls_image::gd_version()和不支持JPEG


在安装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();改成:

$ci = new cls_image();
return $ci->gd_version();


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 xxx\cls_template.php on line 424

打开cls_template.php,定位到424行,发现下面内容:

$tag_sel = array_shift(explode(' ', $tag));

将其注释掉,分别拆开,添加两行

$tag_tmp = (explode(' ', $tag));
$tag_sel = array_shift($tag_tmp);

原因在于PHP5.3版本开始,array_shift不支持函数返回


5.Deprecated: preg_replace(): The /e modifier is deprecated, use

使用php5.5运行ecshop的时候出现如下错误Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in \ecshop\includes\cls_template.php on line 300 解决方法如下: 打开ecshop的目录找到includes\cls_template.php 到第300行 把

return preg_replace("/{([^\}\{\n]*)}/e", "\$this->select('\\1');", $source);
替换成
return preg_replace_callback("/{([^\}\{\n]*)}/", function($r) { return $this->select($r[1]); }, $source);

重新运行问题以解决 官方说明http://www.php.net/manual/zh/reference.pcre.pattern.modifiers.php

CopyRight © 2017 荒山本的官方网站 粤ICP备16049175号 All Right Service 网站地图(xml) 网站地图(html)