大ピンチ!WordPressの「Fatal error: Cannot redeclare」の復旧方法

Fatal error: Cannot redeclareの復旧方法

こんにちは。にっしー(@prblggr)です。

本日は、WordPressの2重定義(redeclare)エラーの原因と復旧方法のお話です。

先日WordPressのテーマを編集していたら、いきなり

「Fatal error: Cannot redeclare」

とエラーが出て画面が真っ白になってしまったんです。

なんとか復旧したんですがけっこう手こずったので、エラーの原因と復旧方法を書きのこしておきます。

ちょっと専門的なお話なのですが、WordPressでブログを運営していると、

「画面が真っ白」

の恐怖はだれでも一度は経験するものです。

みなさんも、テーマをいじったりするときに、おなじエラーが起きてしまう可能性があるので、そういえば にしむー がなんか書いてたなーと思い出していただけるとうれしいです^^

functions.phpをいじっていたら突然画面が真っ白に・・・

わたしはWordPressでブログを書いています。

それでテーマ(ハミングバード)を色々とカスタマイズしていたんです。

カスタマイズといってもハミングバードはほとんど完成されているすばらしいテーマなので、大掛かりに関数をいじったりすることはありません。

ただタブレットでの広告の見え方が気になっていたので、functions.phpに条件分岐の関数を追記しました。

そうしたらいきなり画面が真っ白に・・・さらにこんなエラー画面が表示されました。

Fatal error: Cannot redeclare is_mobile()(…)

にしむー
重大なエラー!?

あーなんか間違ったのかなーとすぐに追記した関数を削除して更新したんですが、再びエラー画面に・・・

にしむー
あれれ?

しょうがないのでメモしておいた元々のコードと置き換えてみたけど・・・治らない。。

にしむー
えー!ヤバイよ!ヤバイよ!

ハミングバードはめっちゃ完成度高いし、たいしていじらないと思ってバックアップも取ってない\(^o^)/

Google先生!助けて!

関数の二重定義が原因!?

しらべてみると、今回のエラー「Fatal error: Cannot redeclare」は、関数の2重定義が原因でした。

「Fatal error: Cannot redeclare」エラーは、同じ名前のユーザー定義関数を何度も定義した場合などに表示されます。
参照:「Fatal error: Cannot redeclare」と表示されるとき

ようするに、すでにテーマに書かれている関数をもう一度書こうとするとダブってしまって、こういったエラーがおこるんです。

わたしが今回追記したのはスマホとタブレット・PCの条件分岐の関数なのですが、コードをよく読んでみるとハミングバードにはすでにおなじ関数が書いてありました。

にしむー
さすがハミングバード。利用者の気持ちはお見通しなのね^^;

しかしコードを消して更新してもエラーが復旧しないのはどうしたものか。

ワードプレスの管理画面で編集できないのであれば、サーバーにアクセスしてファイルを直接編集するしかありません。

わたしのつかっているエックスサーバーXサーバーには WebFTP というファイルマネージャー(ネット上でコードを直接編集できる管理画面)があるので、FFFTP等のFTPソフトがなくてもPHPを直接編集することができます。

それでさっそくWebFTPで追記した条件分岐の関数を削除すると、無事にページが表示されるようになりました。

にしむー
良かったー!ホントに焦った!

備忘録のため、今回のエラー復旧方法の一連のながれを書き記しておきます。

※今回はXサーバーの場合の対処法です。

ワードプレスで「Fatal error: Cannot redeclare」が起きたときの復旧方法

WordPressの管理画面でコードを編集できない場合は、まずサーバーにアクセスします。

そしてファイルマネージャーにログイン。
「Fatal error: Cannot redeclare」の復旧方法

にしむー
コントロールパネルではないよ

そして該当のドメインを選択。
「Fatal error: Cannot redeclare」の復旧方法

以下「public html」→「wp content」→「themes」→「今つかっているテーマ(今回はhummingbird)」

つぎに「functions.php」というファイルを探して、チェックボックスにチェックを入れる。

そして右側にあるファイル操作の編集を選択します。

「Fatal error: Cannot redeclare」の復旧方法

これでファイル内の関数が表示されるので、該当箇所を修正します。

今回は、追記してダブってしまった条件分岐のコードを削除します。

修正がおわったら、さいごにページ下部の編集を押したら復旧完了です。

まとめ

今回は

WordPressで「Fatal error: Cannot redeclare」になったときの復旧方法

についてまとめました。

いやーホントにあせった^^;

みなさんもWordPressのカスタマイズは慎重に!

明日の にしむらぼ は

明日朝7時に公開のブログは

『一本桜を目指せ!私がはてなブログではなくワードプレスを選ぶ理由』

です!

わたしは はてなブログ が大好きなんですが、あえてWordPressでブログを書いています。

その理由をお話します^^

お楽しみに♪

この記事を読んだ人は、コチラの記事も読んでます

WordPressのサーバーをケチってブログが消滅した話

2016.09.26

WordPress初心者ほど、いいサーバーをえらんだほうがいいよ!というお話です。

サーバーえらびに悩んでいる方、ぜひ一度お読みください^^

Fatal error: Cannot redeclareの復旧方法