运行环境: linux nginx php5.4.16
1. ecshop提示Strict Standards: Only variables should be passed by reference in /includes/cls_template.php
在/includes/cls_template.php找打
$tag_sel = array_shift(explode(' ', $tag));
改成:
$tag_arr = explode(' ', $tag); $tag_sel = array_shift($tag_arr);
2. Strict Standards: Non-static method cls_image::gd_version() should not be called statically in includes\lib_base.php
找到includes/cls_image.php中的678行,发现gd_version()方法未声明静态static。
将
function gd_version()
改成
static function gd_version()
3. Deprecated: Assigning the return value of new by reference is deprecated in includes/lib.debug.php on line 303
将admin/goods_batch.php中
$filter = &new stdclass;
改为
$filter = new stdclass;
将includes/lib.debug.php中的
$pa = &new Print_a_class;
改为
$pa = new Print_a_class;
4. Strict Standards: mktime(): You should be using the time() function instead in shop_config.php
sms_url.php里面也有
将
$auth = mktime();
改为
$auth = time();
5. Standards: Only variables should be passed by reference in \lib_main.php on line 1329
将
$ext = end(explode('.', $tmp));
改为
$tmp_arr=explode('.', $tmp); $ext = end($tmp_arr);
6. Redefining already defined constructor for class…
所有的payment的文件都有这个问题,
其中使用和类名相同点函数名作为构造函数是php4时代的写法,php5时代的构造函数是 __construct(),ecshop为了兼容老版本的php,所以采用了上面的写法。
但是从php5.4开始,对于这样的两种写法同时出现的情况,要求必须__construct()在前,同名函数在后,所以只需要对调两个函数的位置即可。
解决方法:
调换一下两个函数的前后位置即可。
以 includes/modules/payment/alipay.php 为例:
将下面这两个函数的位置互换一下就OK了,__c**truct()在前,alipay()在后
**********************2016.11.21更新*********************
7. admin\includes\cls_sql_dump.php on line 90
把 cls_sql_dump的 function __construct()改到 function cls_sql_dump()的前面
把 cls_sql_dump的 function get_random_name()改成 static function get_random_name()
**********************2016.11.29更新*********************
8. Ucenter问题
Strict standards: Declaration of ucenter::login() should be compatible with integrate::login($username, $password, $remember = NULL)
修改includes\modules\integrates文件夹下的ucenter.php文件,大概在127行,
把 function login($username, $password)
改成 function login($username, $password, $remember = NULL)
Strict Standards: Declaration of ucenter::set_cookie() should be compatible with integrate::set_cookie($username = ”, $remember = NULL)
把:set_cookie($username = ”)
修改为:set_cookie($username = ”, $remember = NULL)
Strict standards: Declaration of ucenter::add_user() should be compatible with integrate::add_user($username, $password, $email, $gender = -1, $bday = 0, $reg_date = 0, $md5password = ”)
找到 function add_user($username, $password, $email)
改为 function add_user($username, $password, $email, $gender = -1, $bday = 0, $reg_date = 0, $md5password = NULL)
**********************2016.12.01更新*********************
9. Notice: unserialize() [function.unserialize]: Error at offset 159 of 647 bytes in \eshop\includes\lib_common.php on line 224
在lib_common.php找到
if (empty($arr['integrate_code'])) { $arr['integrate_code'] = 'ecshop'; // 默认的会员整合插件为 ecshop } write_static_cache('shop_config', $arr);
改为
if (empty($arr['integrate_code'])) { $arr['integrate_code'] = 'ecshop'; // 默认的会员整合插件为 ecshop } if (!empty($arr['integrate_config']) && EC_CHARSET == 'utf-8') { $arr['integrate_config'] = preg_replace('!s:(\d+):"(.*?)";!se',"'s:'.strlen('$2').':\"$2\";'",str_replace(' ','',$arr['integrate_config'])); } write_static_cache('shop_config', $arr);