1001001

73。CTFのWrite-upや技術的な備忘録を書きとめたいです。

WordPressで外観のカスタマイズページにアクセスできない(500 error)

とある環境のWordPressにて,外観のカスタマイズページにアクセスできず,テーマのカスタマイズができない状態に陥りました.一応改善できたのでそのメモ.

現象

WordPressの左メニューから[外観]-[カスタマイズ]とアクセスしたら500 errorで表示できないという旨のエラーが出た.ここにアクセスできないと,テーマのカスタマイズができないので非常に不便.

原因

こういった現象に遭遇するのは初めてで,原因がよくわからなかったので調査することに.まずはapacheのerror_logを見てみました.すると以下のようなエラーが出ていました.

PHP Fatal error:  Class 'WP_Customize_Media_Control' not found in ファイル名 on line 行数

どうやらインストールしたテーマの中にあるphpファイルの中で定義されていない関数が呼び出されているようでした.ここでエラーが出るためカスタマイズページにアクセスできなかったというわけです.

エラーが出ている部分を確認すると,カスタマイズで画像を変更するような処理をしている部分でした.この関数でgrepをかけてみると,確かにこの関数を定義しているようなファイルは見つかりませんでした.

grep -r WP_Customize_Media_Control

調べてみると,これと似た関数にWP_Customize_Image_Controlというものがあるらしく,上記と同じようにgrepしてみると,こちらは定義されていそうでした.バージョン違いでこの関数が使い分けられたりしているのかな...とか思いGoogle先生に聞いてみたのですが,ググり力が乏しくあまりよくわからなかったです.なので,とりあえずWP_Customize_Media_Controlを使っている影響でエラーが出ている部分をWP_Customize_Image_Controlに変更すると,カスタマイズページにアクセスでき,無事に画像変更の処理も動きました.

余談

最初は思考停止でエラー部分をコメントアウトしたりしていました.カスタマイズページにはアクセスできましたが画像変更の処理が動かずデフォルトの画像から変更ができないということになり,上記のような対策を取りました.

(更新)新しいバージョンにしたら問題なくアクセスできました.やっぱりバージョンの問題ですかね.