PHP 致命错误:调用时传递引用已被删除
Posted
技术标签:
【中文标题】PHP 致命错误:调用时传递引用已被删除【英文标题】:PHP Fatal error: Call-time pass-by-reference has been removed 【发布时间】:2013-11-17 05:55:30 【问题描述】:我有一个旧的脚本,最近我收到了这个错误:
Fatal error: Call-time pass-by-reference has been removed in /****/******/public_html/****/cp-list-summary.php on line 100
它在该文件的第 100 行左右看起来像这样:
if ($row[images])
$image_set = array ();
$result = mysql_query ('SELECT fname FROM ' . $dbimgs . ' WHERE listid=\'' . $_GET['id'] . '\' ORDER BY id ASC', $link);
while ($images = mysql_fetch_array ($result))
array_push (&$image_set, $images[fname]);
导致错误的原因以及如何解决?我不是开发者,所以请慢慢来。
【问题讨论】:
Call-time pass-by-reference has been removed 的可能重复项 【参考方案1】:看起来您的站点 php 已升级,或者您正在重用 只需删除 (&$image 注意:函数调用没有参考符号 - 仅在函数定义上。仅函数定义就足以通过引用正确传递参数。从 PHP 5.3.0 开始,当您在 foo(&$a); 中使用 & 时,您将收到一条警告说“调用时传递引用”已被弃用。从 PHP 5.4.0 开始,调用时传递引用已被删除,因此使用它会引发致命错误。 不应通过引用传递其他表达式,因为结果未定义。
【讨论】:
【参考方案2】:您正在尝试将指针传递给array_push
中的数组。这就是遇到致命错误的原因。只需使用:
array_push( $image_set, $images[fname] );
注意:如果第一个参数不是,
array_push()
会发出警告 一个数组。
【讨论】:
【参考方案3】:进入Joomla根目录并执行:
find ./ -type f -name "*.php" -exec sed -i 's/\&\$/\$/g' +
这对我有用。
【讨论】:
以上是关于PHP 致命错误:调用时传递引用已被删除的主要内容,如果未能解决你的问题,请参考以下文章
用ado对SQLSERVER数据库操作,删除一条记录后查询提示“句柄引用了一个已被删除的行或标示为删除的行”
为啥 PHP 在一种情况下允许将文字传递给按引用传递的参数,而在其他情况下不允许?