You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP图片上传报错:Only variables should be passed by reference 解决咨询

解决PHP上传图片时的「Only variables should be passed by reference」报错

嘿,这个问题我平时帮人排查PHP上传问题时碰到过好多次!咱们先搞明白为啥会出这个提示,再给你两种靠谱的解决办法~

错误原因

end() 这个函数的要求是必须传入一个变量的引用,而你现在直接把 explode(".", $name) 生成的临时数组丢给它了——临时值没法被当作引用传递,所以PHP就抛出这个Notice提示啦。

解决办法

方法1:先把分割结果存为变量,再传进end()

最直接的修复方式,就是把explode的结果先存到一个变量里,再把变量传给end():

// 先将文件名分割后的数组存入变量
$nameSegments = explode(".", $name);
// 再用end()获取数组最后一个元素(扩展名)
$exten = end($nameSegments);
$imagename1 = $sname . "-" . $rno . "." . $exten;

方法2:用专门的pathinfo()函数获取扩展名(更推荐)

其实PHP有个专门处理文件名/路径的函数pathinfo(),直接就能拿到扩展名,比手动explode更稳妥,还能处理文件名里有多个点的情况(比如my.image.file.jpg):

// 直接获取文件扩展名,不用手动分割
$exten = pathinfo($name, PATHINFO_EXTENSION);
$imagename1 = $sname . "-" . $rno . "." . $exten;

这个方法不仅能避免刚才的引用问题,还能自动处理各种边缘情况,比如文件名没有扩展名时会返回空字符串,非常实用。

内容的提问来源于stack exchange,提问作者sandilyan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:23:51