WordPressで「Fatal error: Call-time pass-by-reference has been removed in /export/sd09/www/jp/r/e/…simple-lightbox」となった時の解決方法
WordPressで「Fatal error:…」と突然表示
とあるWordPressのサイトで、特に何もしていないはずなのに突然「Fatal error: Call-time pass-by-reference has been removed in /export/sd09/www/jp/r/e/★WordPressがインストールされているディレクトリ★/wordpress-2.8.2-ja-undernavicontrol/wp-content/plugins/simple-lightbox/includes/class.utilities.php on line 40」と出てしまいました。
原因はさておき、先に解決方法から説明します。
1.エラーの内容を良く確認する
エラーの最期の部分に着目すると「plugins/simple-lightbox/includes/class.utilities.php on line 40」と確認できます。これがエラーの原因です。
2.エラーの原因のファイルを開いて確認する
エラーの通りに辿ると原因に行き着きます。一応細かく説明してみます。
wp-content(というフォルダの)
↓
plugins(というフォルダの)
↓
simple-lightbox(というフォルダの)
↓
includes(というフォルダの)
↓
class.utilities.php(というファイルの)
↓
on line 40(40行目)
ということで、問題のファイルの40行目を確認してみると以下のようなコードが、
[crayon]
$this->__construct(&$obj);
[/crayon]
このコード内の「&」を削除すれば、それだけで直ります。
つまり
[crayon]
$this->__construct(&$obj);
↓
$this->__construct($obj);
[/crayon]
理由は「PHP5.4」からの新仕様にあった
こういうのに詳しいいわく、PHP5.4からの新しい仕様が原因だったそうです。今回の私のケースでは「simple-lightbox」というプラグインが原因でしたが、どうも他のプラグインでも同じような現象が起きている様子です。どうやらお名前.COMの「共用サーバーSD」でこの現象が多く起こっている様子。
そこで調べてみたところ…
お名前.com「共用サーバーSD」のPHPが「5.5.9」になっていた
2014年05月01日(木)掲載
【重要】【共用サーバー SD】 PHP5.2提供終了のお知らせ
平素はお名前.comレンタルサーバーをご利用いただきまして、誠にありがとうございます。
このたび、共用サーバーSDにてご利用いただいているPHP5.2の提供を終了させていただく運びとなりました。
PHP5.2はPHP自体のサポートが終了しており、脆弱性などセキュリティーを考慮した対応となりますので、何卒ご理解賜りますようお願い申し上げます。
【変更内容】
PHP5.2をPHP5.5へ変更いたします。【作業予定日】
2014年6月16日~2014年6月30日
※順次作業を実施いたします。【影響】
●共用サーバーSDですでにご利用中のドメイン
PHP5.2を設定されているドメインは、本作業後、PHP5.5に設定変更されます。※現在、PHPのバージョンはコントロールパネルよりPHP5.4もしくはPHP5.5への設定変更が可能です。詳細はこちら
PHP5.2以下に対応したプログラムをご利用の場合、PHPが正常に動作せず、ホームページが正常に表示できない等の影響が生じる場合がございます。
●今後、新たに共用サーバーSDに申し込み/追加設定されるドメイン
初期状態でPHP5.5が設定されている状態となります。※セットアップ完了後、PHP5.4への設定変更は可能です。
【事前の動作確認のお願い】
コントロールパネルにログインいただき、PHPバージョン選択より「PHP5.5.x」を選択のうえ、ご利用プログラムが動作するかご確認をお願いいたします。
動作しない場合は、PHP5.5またはPHP5.4にて動作するよう該当プログラムの修正をお願いいたします。
引用元:http://www.onamae-server.com/support/news/detail.php?nid=15805
まさにこれが原因だったようです。私のところは比較的簡単なエラーで助かりましたが、もっと大変なサイトもあったかもしれませんね。今回は私ののケースというところで直し方を共有してみましたが、深刻な場合は是非専門家にご相談することをおすすめします。