專業南寧網站建設10年,服務客戶1000+

ecshop 2.7.3兼容php5.5及以上版本修改流程

2019-06-11


ecshop 2.7.3兼容php5.5及以上版本修改流程

ecshop是國內比較流行的搭建網上商城的開源php軟件,但其更新較慢,只能在PHP5.2/5.3正常運行。而現在php版本已經更新到7.0了,使用php5.2/5.3的人越來越少,更多的人轉向使用更高的php版本。可以通過修改部分ecshop代碼讓其支持PHP5.5及以上版本。

1、Deprecated: Assigning the return value of new by reference is deprecated in F:\xampp\htdocs\ecsphp5\includes\lib.debug.php on line 303

  1. $pa = &new Print_a_class;
  2. //修改為:
  3. $pa = new Print_a_class;

PHP5.3+廢除了”=&”符號,對象復制用”=”即可,詳細如下:
PHP5對象復制是采用引用的方式。
如果不采用引用方式,則需要在復制對象時加關鍵字 clone。
如果在復制的過程中,同時要變更某些屬性,則增加函數_clone()。

2、Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead *

出現這個錯誤的原因是 preg_replace() 函數修飾符 /e 在 PHP5.5.x 中已經被棄用了,若出現這個錯誤可以用 preg_replace_callback 進行代替。(一般的可以直接去掉 e 函數,但以下需要用preg_replace_callback代替)

2.1 \includes\cls_template.php 文件中的 fetch_str()函數

  1. return preg_replace("/{([^\}\{\n]*)}/", "\$this->select('\\1');", $source);
  2. //修改為
  3. return preg_replace_callback("/{([^\}\{\n]*)}/",
  4. function ($match){
  5. return $this->select($match[1]);
  6. }, $source);

2.2 \includes\cls_template.php 文件中的 smarty_prefilter_preCompile()函數

  1. $replacement = "'{include file='.strtolower('\\1').}'";
  2. $source = preg_replace_callback($pattern, $replacement, $source);
  3. //修改為
  4. $source = preg_replace_callback($pattern, function($match){
  5. return '{include file="'.strtolower($match[1]).'"}';
  6. }, $source);

2.3 \includes\cls_template.php 文件中的 get_val()函數

  1. $val = preg_replace("/\[([^\[\]]*)\]/eis", "'.'.str_replace('$','\$','\\1')", $val);
  2. //修改為
  3. $val = preg_replace_callback("/\[([^\[\]]*)\]/is",function($match){
  4. return ".".str_replace('$','\$',$match[1]);
  5. }, $val);

2.4 \includes\cls_template.php 文件中的 select()函數

  1. //$out = "<?php \n" . '$k = ' . preg_replace("/(\'\\$[^,]+)/e" , "stripslashes(trim('\\1','\''));", var_export($t, true)) . ";\n";
  2. //修改為
  3. $out = "<?php \n" . '$k = ' . preg_replace_callback("/(\'\\$[^,]+)/" , function($match){
  4. return stripslashes(trim($match[1],'\''));
  5. }, var_export($t, true)) . ";\n";

3、 Strict Standards: Only variables should be passed by reference in *

5.3以上默認只能傳遞具體的變量,而不能通過函數返回值。可做類似以下修改;

  1. //\includes\lib_main.php
  2. $ext = end(explode('.', $tmp));
  3. //修改為
  4. $ext_arr = explode('.', $tmp);
  5. $ext = end($ext_arr);
  1. //includes\cls_template.php on line 422
  2. $tag_sel = array_shift(explode(' ', $tag));
  3. //修改為
  4. $tag_arr = explode(' ', $tag);
  5. $tag_sel = array_shift($tag_arr);

4、Strict Standards: Non-static method cls_image::gd_version() should not be called statically

  1. //修改 cls_image 類
  2. function gd_version()
  3. //修改為
  4. static function gd_version()

5 Strict Standards: mktime(): You should be using the time() function instead

直接用time 代替mktime即可。

PHP5.1版后調用mktime()不帶參數,等同于調用time(),,應用其代替。

6 Strict Standards: Redefining already defined constructor for class

將同名構造函數 放在 __construct() 之后。

PHP類,有兩種構造函數,一種是跟類同名的函數,一種是 __construct()。從PHP5.4開始,對這兩個函數出現的順序做了最嚴格的定義,必須是 __construct() 在前,同名函數在后。

涉及到的修改文件有

文件名文件大小最后修改時間狀態
admin/
被修改: 5
cloud.php“8167 Bytes”2016/2/3 20:56被修改
privilege.php“25918 Bytes”2014/12/12 11:14被修改
shop_config.php“13702 Bytes”2016/2/3 20:56被修改
sms_url.php“1186 Bytes”2016/2/3 20:56被修改
sql.php“4634 Bytes”2014/12/12 11:19被修改
admin/includes/
被修改: 1
cls_sql_dump.php“14094 Bytes”2016/2/6 18:39被修改
includes/
被修改: 6
cls_captcha.php“8734 Bytes”2016/2/3 20:59被修改
cls_image.php“23083 Bytes”2016/2/2 23:10被修改
cls_mysql.php“27347 Bytes”2016/2/6 18:40被修改
cls_template.php“44542 Bytes”2016/2/6 19:49被修改
lib.debug.php“25893 Bytes”2016/2/2 21:59被修改
lib_main.php“67400 Bytes”2016/2/2 22:52被修改
includes/modules/payment/
被修改: 15
alipay.php“6661 Bytes”2016/2/6 18:10被修改
balance.php“2146 Bytes”2016/2/6 18:10被修改
bank.php“2091 Bytes”2016/2/6 18:10被修改
cappay.php“12133 Bytes”2016/2/6 18:10被修改
chinabank.php“5521 Bytes”2016/2/6 18:10被修改
cod.php“2208 Bytes”2016/2/6 18:10被修改
epay.php“5708 Bytes”2016/2/6 18:10被修改
ips.php“5554 Bytes”2016/2/6 18:11被修改
kuaiqian.php“13153 Bytes”2016/2/6 18:11被修改
paypal.php“8200 Bytes”2016/2/6 18:11被修改
paypal_ec.php“8429 Bytes”2016/2/6 18:11被修改
post.php“2134 Bytes”2016/2/6 18:11被修改
shenzhou.php“15209 Bytes”2016/2/6 18:11被修改
tenpay.php“8425 Bytes”2016/2/6 18:12被修改
tenpayc2c.php“8679 Bytes”2016/2/6 18:12被修改

修改后

后臺

ecshop 修改 兼容PHP5.5<img alt="ecshop 修改 兼容PHP5.5" src="https://s.yunzhuji.shop/uploads/image/160206/1l291nxr74.JPG_.jpg?media_id=319" title="ecshop 修改 兼容PHP5.5" width="600" >

0
首頁
案例
關于
聯系
火影忍者全集下载
武汉小姐上门兼职 助羸计划网页版 11选5在线预测 11选5怎么买才能赚钱 精准人工计划软件手机版 3d复式怎么中奖规则 王者荣耀妲己被× 有谁玩北京pk10赢过钱 通比牛牛怎样看走势规律 2019重庆时时采彩开奖时间