超メモ帳(Web式)@復活

統合失調症を患い、はてなからも逃亡。現在、復活のため準備中。


SPONSORED LINK

Call-time pass-by-reference has been deprecated


久々に管理しているdokuwikiを開いてみるとタイトルのエラーが発生していたのです。

Warning: Call-time pass-by-reference has been deprecated in /home/yuki_2021/public_html/wiki/inc/common.php on line 848


対象箇所のソースを見ると下記のような感じだった。

<?php

if($data['doreplace']) parsePageTemplate(&$data);

?>


どうにもソースコードおってみたのだが原因が見つからない。ひとまずググッてみたところphp.iniのオプションの問題のようですな。


PHP: コア php.ini ディレクティブに関する説明 - Manual

allow_call_time_pass_reference boolean

関数のコール時に引数が参照で渡された場合に、警告するかどうかを設定します。 推奨される方法は、関数宣言時に参照渡しとするべき引数を指定することです。 将来のバージョンでの動作を保障するために、 このオプションを off とし、 スクリプトがこの状態で正しく動作することを確認することが推奨されます (この機能を使用する度に警告が発生します)。

関数コール時に参照で引数を渡すことは、コードの明解さを損なうために 廃止されています。関数は、引数が参照渡しであると宣言されて いない場合でも、文書化されていない方法で、その引数を修正できます。 副作用を回避するためには、どの引数を参照渡しとするかを関数宣言でのみ 指定すると良いでしょう。

PHP5 では allow_call_time_pass_reference は非推奨となります。 PHP 5.3.0 より前のバージョンではこの機能を使うと E_COMPILE_WARNING が発生し、PHP 5.3.0 以降では E_DEPRECATED となります。


……いらんわそんなオプション。というわけで該当箇所の参照渡しを直したら治りました。

プライバシーポリシー免責事項