古いスクリプトがあり、最近このエラーが発生します。
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]);
}
}
エラーの原因と修正方法を教えてください。私は開発者ではないので、ゆっくりと読んでください。
_array_Push
_で配列へのポインターを渡そうとしています。そのため、致命的なエラーが発生します。単に使用:
_array_Push( $image_set, $images[fname] );
_
注:
array_Push()
は、最初の引数が配列でない場合に警告を発します。
サイトのphpがアップグレードされているか、<php 5.3のコードを再利用しているようです
& on(&$ image
注:関数呼び出しに参照記号はありません-関数定義にのみあります。関数定義だけでも、参照によって引数を正しく渡すのに十分です。 PHP 5.3.0以降では、foo(&$ a);で&を使用すると、「call-time pass-by-reference」は非推奨であるという警告が表示されます。 of PHP 5.4.0、call-time pass-by-referenceが削除されたため、これを使用すると致命的なエラーが発生します。
結果は未定義であるため、他の式は参照渡ししないでください。
Joomlaルートディレクトリに移動して実行します。
find ./ -type f -name "*.php" -exec sed -i 's/\&\$/\$/g' {} +
これでうまくいきます。