Fatal error: Uncaught Error: Call to undefined functionの事象
今回のエラー、原因を簡単に言うと、ワードプレスのバージョンを新しくしたことによるエラーでした。状況は以下の通りです。
【事象】
記事作成中に、以下のエラーが発生。
Fatal error: Uncaught Error: Call to undefined function eregi_replace() in /home/threegoals/of-life.com/public_html/wp-content/plugins/link-indication/link-indication.php:315 Stack trace: #0 [internal function]: LinkIndication->ParseLinks(Array) #1 /home/threegoals/of-life.com/public_html/wp-content/plugins/link-indication/link-indication.php(115): preg_replace_callback (後略)
(補足)
記事を書いて、プレビューするとエラー「Fatal error: Uncaught Error: Call to undefined function」が出る(公開しても同じ)。
「Fatal error: Uncaught Error: Call to undefined function」の意味
→「致命的なエラー:未知のエラー:未定義の関数を呼び出す」(Google翻訳)
※記事中にURLのリンクがあるとエラーになり、URLリンクがない場合はエラーは出ない
リンク例
環境
WordPress 4.7.3
PHP7.0.7
Fatal error: Uncaught Error: Call to undefined functionの原因
【原因】
PHP7.0.7とプラグイン:Link Indication(バージョン 4.4)の不整合。
(状況)
新しいブログを作成するため、レンタルサーバ(Xserver)でワードプレスをインストール。自動インストールでWordPress 4.7.3が自動的にインストールされた。PHPのバージョンは、PHP7.0.7。
プラグインは、他のブログで使っているプラグインを全てインストール。他のブログは、WordPress 4.2.13、PHP5.3.3で特にエラーは出ていなかった。
エラーをよく見ると、「~public_html/wp-content/plugins/link-indication/link-indication.php:~」って出ていたので、ヒントにした。
Fatal error: Uncaught Error: Call to undefined functionの解決方法
【解決方法】
PHP7.0.7を使いたい場合
Link Indication(バージョン 4.4)を停止する。
(備考)
link-indication.phpを修正してみたが、今回のエラーは解消できそうだけど、別のエラーが出たりする。あまり使わないプラグインだし、ワードプレスのデフォルトの「link」機能を使えばいいので、Link Indicationは使わないことにした。
Link Indication(バージョン 4.4)を使いたい場合
PHP7.0.7を使用しない(PHP5.x.xに変更する→PHP5.6.22、PHP5.3.3だと問題ないことは確認済)。
ワードプレスのブログのエラーから注意と成長の攻めと守りを再確認する
「Fatal error: Uncaught Error: Call to undefined function」について見てきました。
今回、ソフトウェアのバージョンには注意しないといけない、というのを改めて感じました。ワードプレスのバージョン、PHPのバージョン、プラグインのバージョン。できれば新しいバージョンのやつを使いたいという気持ちも出てくるけど、今回のようにバージョンによる不整合があると、不要な時間を取られてしまいます。今回は、新規サイトだったのでそれほど大きな影響はありませんでしたが、すでにアクセスが多いサイト、収益を上げているサイトだと、大きな影響が出る可能性もあるので注意しないといけないですね。
かといって、古いバージョンのやつをずっと使っていると、バグの解消だったり、セキュリティ面のところで不安が残る場合もあるので、新しいものがまったくダメかというとそういうわけでもない。
一番いいのは、テスト環境というか、どうなってもいい環境というか、新しいソフトウェアを試すための環境を1つ用意しておくのがいいですね。そうすれば、そこの環境で、新しいソフトウェアを試して、問題なければ、別の環境にも導入する。問題があれば、別の環境へ導入は見送る。
なんでもそうですが、新しいことを始めると、トラブルとか問題ってのは、つきものです。トラブルや問題が起こってそれを解決し、乗り越えることで成長できる。だから、新しいものを取り入れるのが、全く悪いわけでもない。
新しいものを取り入れるのを攻撃とすると、現状維持を守りとする。どちらも大切なんですけど、バランスが大切。ただ、攻撃5、守り5だと成長がない。なので、攻撃6か7、守備4か3ぐらいのバランスが一番いいバランスだと思います。イメージ的に。サッカーとかでよく言う、攻撃は最大の防御、ってやつですね。個人的には、攻撃を軸にいろいろ取り組んで行きたいと思います。
と、ワードプレスのエラーから、成長の攻撃と守りを再確認してみました。
それでは、今回もありがとうございました。