我有一个旧的脚本,最近我收到此错误:
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]);
}
}
导致错误的原因是什么以及如何修复它?我不是开发人员,所以请慢慢来。
看起来您的网站 php 已升级,或者您正在重用 php 5.3 <的代码>的代码>
只需删除 & on (&$image
注意:函数调用上没有引用符号 - 仅在函数定义上。仅函数定义就足以通过引用正确传递参数。从 PHP 5.3.0 开始,当您使用 & in foo(&$a); 时,您将收到一条警告,指出"调用时间传递引用"已被弃用。从 PHP 5.4.0 开始,调用时按引用传递被删除,因此使用它会产生致命错误。
不应通过引用传递其他表达式,因为结果是未定义的。
您正在尝试在 array_push
中传递指向数组的指针。这就是遇到致命错误的原因。只需使用:
array_push( $image_set, $images[fname] );
注意:如果第一个参数不是,
array_push()
将引发警告 一个数组。
进入 Joomla 根目录并执行:
find ./ -type f -name "*.php" -exec sed -i 's/'&'$/'$/g' {} +
这对我有用。