Home  >  Article  >  Backend Development  >  求教 报这个异常可能是什么原因

求教 报这个异常可能是什么原因

WBOY
WBOYOriginal
2016-06-13 12:10:57834browse

求教 报这个错误可能是什么原因
本地安装的ecshop网站传到网上报这个错误  Strict Standards: Only variables should be passed by reference in lib_main.php on line 2661  本地php是5.2的

这个文件 的2661行是这样的    $ext = end(explode('.', $tmp));

    $tmp = basename($tmp,".$ext");  求教可能是什么原因 


------解决思路----------------------
 Strict Standards: Only variables should be passed by reference
严格的标准:在这里只能是变量
$ext = end(explode('.', $tmp));
应写作
$t = $ext = explode('.', $tmp);
$ext = end($t);
这是 php 5.4 以后才有的错误检查
其实 php 早就已经提供了更简洁的函数
$ext = pathinfo($tmp, PATHINFO_EXTENSION);
------解决思路----------------------
end需要的参数是引用类型  ,引用类型必须是左值,如下
mixed end ( array &$array )
而函数explode返回的的是右值,是不能作为引用的
------解决思路----------------------
mixed end ( array &$array )

end内参数是引用类型。
是explode返回的并不是变量,所以出错。

其实改一改就可以。

<br />$ext = substr($tmp, strrpos($tmp,'.')+1);<br />




<br />$ext = explode('.', $tmp);<br />$ext = array_pop($ext);<br />echo $ext;<br />

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn