wordpress3.6で予約プラグイン(MTS Simple Booking)の設定が一通り終わり管理画面内の「予約システム」→「予約カレンダー」(wp-admin/admin.php?page=simple-booking)を開くと以下のエラーになります。

何か対処法等ありますでしょうか?
Fatal error: Call-time pass-by-reference has been removed in /var/www/vhosts/*******/wp-content/plugins/mts-simple-booking-c/mtssb-calendar-admin.php on line 374

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2013/09/03 01:10:02
  • 終了:2013/09/03 10:07:46

ベストアンサー

id:rouge_2008 No.1

rouge_2008回答回数594ベストアンサー獲得回数3512013/09/03 04:40:36

ポイント100pt

次のページでエラーの原因と修正方法が解説されていました。

・「Fatal error: Call-time pass-by-reference has been removed」の対処
http://dogmap.jp/2013/07/25/call-time-pass-by-reference-has-been-removed/

エラーの原因

PHP 5.4 では、Call-time pass-by-reference (関数呼び出し時の強制参照渡し) 機能が削除されました。
ちなみに今までは php.ini で「allow_call_time_pass_reference」を ON にすれば ( デフォルトで ON です )、この機能が使えていました。
ただし、以下の記述のように将来的に廃止されると宣言されていた機能です。

関数のコール時に引数を強制的に参照で渡す機能の有効/無効を設定 します。この機能は過去のものであり、将来のバージョンの PHP/Zendではサポートされない可能性があります。 推奨される方法は、関数宣言時に参照渡しとするべき引数を指定す る方法です。将来のバージョンでの動作を保障するために、このオ プションをoffとし、スクリプトがこの状態で正しく動作することを 確認することが推奨されます。 (この機能を使用する度に警告が発生し、引数は参照ではなく値で渡 されます。)

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



MTS Simple Bookingの場合は、次の手順で修正できます。

1.エラーになっている374行目の関数に渡している引き数「&$reserved」の先頭の「&」を消去して次のようにします。

				$adjustment = $this->_retrieve_adjustment($reserved);

2.423行目の「$abooking」を次のように「&$abooking」に変更して、関数に渡される引数が参照渡しである事を明示します。

	private function _retrieve_adjustment(&$abooking) {

※動作のすべてを確認してはいませんが、このプラグインで参照渡しになっているのは上記1箇所のみでしたので、後はおそらく問題なく動作すると思います。

id:kaji0245

ありがとうございます、大変助かりました<(_ _)>

2013/09/03 10:07:23

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません