ECSHOP在PHP5.5及高版本上报错的解决方法
<p>Ecshop却没来得及修改,如果在高版本的php虚拟主机上安装ecshop程序,出现兼容性问题。</p>
<p>
<strong>小编在本地环境php5.5上安装出现以下两种报错提示</strong>:</p>
<p>
Only variables should be passed by reference php<br>
Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead…?</p>
<p>
通过在网络上查找,小编发现并不是只能在低版本的php中安装,也是找到了解决办法,方便大家在php5.5版本上调试程序。小编就在这里把解决方法分享给大家:</p>
<p>
<strong>先说明第一个问题的解决方法:</strong></p>
<p>
php 5.3以上版本的问题,和配置有关 只要418行把这一句拆成两句就没有问题了。</p>
<p>
将下列:</p>
<div>
<div>
<div id="highlighter_377018">
<div>
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td>
<div>
1</div>
</td>
<td>
<div>
<div>
<code>$tag_sel</code> <code>= </code><code>array_shift</code><code>(</code><code>explode</code><code>(</code><code>' '</code><code>, </code><code>$tag</code><code>));</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div id="codetool">
<div>
<textarea></textarea>
</div>
</div>
</div>
<p>
修改为:</p>
<div>
<div>
<div id="highlighter_410582">
<div>
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td>
<div>
1</div>
</td>
<td>
<div>
<div>
<code>$tag_arr</code> <code>= </code><code>explode</code><code>(</code><code>' '</code><code>, </code><code>$tag</code><code>); </code><code>$tag_sel</code> <code>= </code><code>array_shift</code><code>(</code><code>$tag_arr</code><code>);</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div id="codetool">
<div>
<textarea></textarea>
</div>
</div>
</div>
<p>
因为array_shift的参数是引用传递的,5.3以上默认只能传递具体的变量,而不能通过函数返回值</p>
<p>
<strong>第二个报错解决办法:</strong></p>
<p>
找到文件:<strong>include/cls_template.php</strong></p>
<p>
将以下代码:</p>
<div>
<div>
<div id="highlighter_634951">
<div>
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td>
<div>
1</div>
</td>
<td>
<div>
<div>
<code>return</code> <code>preg_replace(</code><code>"/{([^\}\{\n]*)}/e"</code><code>, </code><code>"\$this->select('\\1');"</code><code>, </code><code>$source</code><code>);</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div id="codetool">
<div>
<textarea></textarea>
</div>
</div>
</div>
<p>
修改成:</p>
<div>
<div>
<div id="highlighter_45545">
<div>
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td>
<div>
1</div>
</td>
<td>
<div>
<div>
<code>return</code> <code>preg_replace_callback(</code><code>"/{([^\}\{\n]*)}/"</code><code>, </code><code>function</code><code>(</code><code>$r</code><code>) { </code><code>return</code> <code>$this</code><code>->select(</code><code>$r</code><code>); }, </code><code>$source</code><code>);</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div id="codetool">
<div>
<textarea></textarea>
</div>
</div>
</div>
<p>
小编目前只遇到这样两个报错,如果在程序调试和开发过程中遇到其他的问题,如果能够解决,小编也是会整理出解决方法的。</p>
<p>
<span>ecshop 在高版本PHP下报错的解决方法</span></p>
<p>
<strong>1 .ecshop提示Strict Standards: Non-static method cls_image</strong></p>
<div>
<div>
<div id="highlighter_359916">
<div>
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td>
<div>
1</div>
</td>
<td>
<div>
<div>
<code>::gd_version() should not be called statically inE:/wwwroot/weirenchou/includes/lib_base.php on line 346</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div id="codetool">
<div>
<textarea></textarea>
</div>
</div>
</div>
<p>
找到346行吧</p>
<div>
<div>
<div id="highlighter_819046">
<div>
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td>
<div>
1</div>
</td>
<td>
<div>
<div>
<code>return</code> <code>cls_image::gd_version()</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div id="codetool">
<div>
<textarea></textarea>
</div>
</div>
</div>
<p>
替换成:</p>
<div>
<div>
<div id="highlighter_692496">
<div>
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td>
<div>
1</div>
</td>
<td>
<div>
<div>
<code>$p</code> <code>= </code><code>new</code> <code>cls_image();</code><code>return</code> <code>$p</code><code>->gd_version();</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div id="codetool">
<div>
<textarea></textarea>
</div>
</div>
</div>
<p>
<strong>2 .ecshop的时候出现如下错误:</strong></p>
<div>
<div>
<div id="highlighter_605998">
<div>
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td>
<div>
1</div>
</td>
<td>
<div>
<div>
<code>Deprecated: preg_replace(): The /e modifier is deprecated, </code><code>use</code> <code>preg_replace_callback instead in /ecshop/includes/cls_template.php on line 300</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div id="codetool">
<div>
<textarea></textarea>
</div>
</div>
</div>
<p>
打开ecshop的目录找到includes/cls_template.php 到第300行</p>
<p>
把</p>
<div>
<div>
<div id="highlighter_870592">
<div>
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td>
<div>
1</div>
</td>
<td>
<div>
<div>
<code>return</code> <code>preg_replace(</code><code>"/{([^/}/{/n]*)}/e"</code><code>, </code><code>"/$this->select('//1');"</code><code>, </code><code>$source</code><code>);</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<br><div id="codetool">
<div>
<textarea></textarea>
</div>
</div>
</div>
<p>
替换成</p>
<div>
<div>
<div id="highlighter_441322">
<div>
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td>
<div>
1</div>
</td>
<td>
<div>
<div>
<code>return</code> <code>preg_replace_callback(</code><code>"/{([^/}/{/n]*)}/"</code><code>, </code><code>function</code><code>(</code><code>$r</code><code>) { </code><code>return</code> <code>$this</code><code>->select(</code><code>$r</code><code>); }, </code><code>$source</code><code>);</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div id="codetool">
<div>
<textarea></textarea>
</div>
</div>
</div>
<p>
<strong>3. Strict Standards: Only variables should be passed by reference in E:/web/shopex/includes/cls_template.php on line 422</strong></p>
<div>
<div>
<div id="highlighter_701656">
<div>
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td>
<div>
1</div>
</td>
<td>
<div>
<div>
<code>$tag_sel</code> <code>= </code><code>array_shift</code><code>(</code><code>explode</code><code>(</code><code>' '</code><code>, </code><code>$tag</code><code>));</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div id="codetool">
<div>
<textarea></textarea>
</div>
</div>
</div>
<p>
改成:</p>
<div>
<div>
<div id="highlighter_385308">
<div>
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td>
<div>
1</div>
</td>
<td>
<div>
<div>
<code>$tag_arr</code> <code>= </code><code>explode</code><code>(</code><code>' '</code><code>, </code><code>$tag</code><code>); </code><code>$tag_sel</code> <code>= </code><code>array_shift</code><code>(</code><code>$tag_arr</code><code>);</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div id="codetool">
<div>
<textarea></textarea>
</div>
</div>
</div>
<p>
<strong>4 .会员整合出现</strong></p>
<div>
<div>
<div id="highlighter_800534">
<div>
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td>
<div>
1</div>
<div>
2</div>
<div>
3</div>
<div>
4</div>
<div>
5</div>
<div>
6</div>
<div>
7</div>
</td>
<td>
<div>
<div>
<code>phpbb::set_cookie() should be compatible with integrate</code>
</div>
<div>
</div>
<div>
<code>/includes/modules/integrates/phpbb.php on line 232</code>
</div>
<div>
</div>
<div>
<code>110行</code>
</div>
<div>
</div>
<div>
<code>function</code> <code>set_cookie (</code><code>$username</code><code>=</code><code>""</code><code>)</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div id="codetool">
<div>
<textarea></textarea>
</div>
</div>
</div>
<p>
修改成</p>
<div>
<div>
<div id="highlighter_176837">
<div>
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td>
<div>
1</div>
<div>
2</div>
<div>
3</div>
</td>
<td>
<div>
<div>
<code>function</code> <code>set_cookie (</code><code>$username</code><code>=</code><code>""</code><code>, </code><code>$remember</code> <code>= NULL)</code>
</div>
<div>
</div>
<div>
<code>includes/modules/integrates/phpwind6.php</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div id="codetool">
<div>
<textarea></textarea>
</div>
</div>
</div>
<p>
ucenter.php vbb.php也是这样修改</p>
<p>
ucenter.php 210行修改成</p>
<div>
<div>
<div id="highlighter_617587">
<div>
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td>
<div>
1</div>
</td>
<td>
<div>
<div>
<code>function</code> <code>add_user(</code><code>$username</code><code>, </code><code>$password</code><code>, </code><code>$email</code><code>, </code><code>$gender</code> <code>= -1, </code><code>$bday</code> <code>= 0, </code><code>$reg_date</code> <code>= 0, </code><code>$md5password</code> <code>= </code><code>''</code><code>)</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div id="codetool">
<div>
<textarea></textarea>
</div>
</div>
</div>
<p>
127行修改成</p>
<div>
<div>
<div id="highlighter_483860">
<div>
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td>
<div>
1</div>
</td>
<td>
<div>
<div>
<code>function</code> <code>login(</code><code>$username</code><code>, </code><code>$password</code><code>, </code><code>$remember</code> <code>= NULL)</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div id="codetool">
<div>
<textarea></textarea>
</div>
</div>
</div>
<p>
<strong>5. 数据库备份出现</strong></p>
<div>
<div>
<div id="highlighter_426734">
<div>
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td>
<div>
1</div>
<div>
2</div>
<div>
3</div>
<div>
4</div>
<div>
5</div>
<div>
6</div>
<div>
7</div>
<div>
8</div>
<div>
9</div>
<div>
10</div>
<div>
11</div>
</td>
<td>
<div>
<div>
<code>edefining already defined constructor </code><code>for</code> <code>class</code> <code>cls_sql_dump</code>
</div>
<div>
</div>
<div>
<code>/admin/includes/cls_sql_dump.php on line </code>
</div>
<div>
</div>
<div>
<code> </code><code>function</code> <code>__construct(&</code><code>$db</code><code>, </code><code>$max_size</code> <code>=)</code>
</div>
<div>
</div>
<div>
<code> </code><code>{</code>
</div>
<div>
</div>
<div>
<code> </code><code>$this</code><code>->cls_sql_dump(</code><code>$db</code><code>, </code><code>$max_size</code><code>);</code>
</div>
<div>
</div>
<div>
<code> </code><code>}</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div id="codetool">
<div>
<textarea></textarea>
</div>
</div>
</div>
<p>
移到function cls_sql_dump(&$db, $max_size=0)前面</p>
<div>
<div>
<div id="highlighter_902093">
<div>
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td>
<div>
1</div>
</td>
<td>
<div>
<div>
<code>Non-</code><code>static</code> <code>method cls_sql_dump::get_random_name() admin/database.php on line 64</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div id="codetool">
<div>
<textarea></textarea>
</div>
</div>
</div>
<p>
打开includes/cls_sql_dump.php</p>
<p>
479行</p>
<div>
<div>
<div id="highlighter_603124">
<div>
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td>
<div>
1</div>
</td>
<td>
<div>
<div>
<code>function</code> <code>get_random_name()</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div id="codetool">
<div>
<textarea></textarea>
</div>
</div>
</div>
<p>
修改成</p>
<div>
<div>
<div id="highlighter_282696">
<div>
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td>
<div>
1</div>
</td>
<td>
<div>
<div>
<code>static</code> <code>function</code> <code>get_random_name()</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div id="codetool">
<div>
<textarea></textarea>
</div>
</div>
</div>
頁:
[1]