ブログ・サイト運営をしていると色々トラブルが起こって対応するということが結構あります。
今回はWordPressのサイトがエラーで表示されなくなるどころか、ダッシュボード(管理画面)にログインすらできなくなりました。
調べてPHPのファイルを修正したら上手くいったっぽいので記事にしておきます。
※参考にする方は必ずバックアップを取って、くれぐれも自己責任でお願いします。
エラーでサイトが表示されない!WordPressの管理画面にログイン出来ない!
私が運営しているサイトのPHPのバージョンがずっと7.4とかだったので、さすがに更新しようと思い、エックスサーバーの管理画面からPHPバージョン8.1にアップデートしました。
ちゃんと動くかなと自分のサイトを見てみたところ、
「Fatal error: Uncaught Error: Call to undefined function create_function() in なんたらかんたら…」と表示されてサイトが表示されなくなりました。
PHP8以降はcreate_functionという関数がなくなったため、そこがエラーの原因になっていたようです。テーマも古いのをずっと使っていたので対応もされていないようでした。
「あー、何かエラーが出てる」と思ってダッシュボードからfunction.phpを修正しようとしたところ、WordPressのログイン画面も同じエラーで表示出来なくなっていました。これではログインが出来ない
WordPressの管理画面からfunction.phpを修正出来ないので、仕方なく借りているサーバー(私の場合はエックスサーバー)からファイルをダウンロードして修正&アップロードしました。
Fatal error: Uncaught Error: Call to undefined function create_function() in のエラーの解決法
create_function関数がなくなったので、そこを修正します。テーマのfunction.phpを開いて「create_function」で文字列を検索し、全てfunctionに修正しました。無名関数。
一応、私の場合の修正例を紹介しておきます。
add_action(‘widgets_init’, create_function(”, ‘return register_widget(“ここの文字列をコピー“);’));
add_action( ‘widgets_init’, function(){ return register_widget(“上でコピーした文字列をここへ貼り付け“); });
人によると思いますが、私の場合は2箇所同じように修正しました。これでログイン画面もサイトも表示されるようになり一安心。あとは他に不具合がないかチェック。
ぱっと見問題なさそう、私の場合は個人サイトでかなりゆるい運営体制なのでとりあえずこれでOKとします。
最後に
WordPressのダッシュボードにログイン出来なくなったのは一瞬焦りましたが、特に問題なく解決出来たようで安心しました。
その後、ついでにずっと放置していたエックスサーバー側の高速化設定や、新サーバーへの移行なども全てのサイトでやっておきました。こちらは特に問題なく進んで良かったです。