先日WordPressのバージョンを4.8.1にあげたところ「admin-ajax.php」でエラーが発生してWordPressが動かなくなりました。
記事に画像を挿入したりするときのように、画面を再読み込みせずに行う処理を「ajax処理」と言うのですが、どうもその「ajax処理」がこけるようになっていました。
元プロフェッショナルのエンジニアとしてこれは興奮します。
問題解決しました!
おそらく犯人はこいつです。
ajax処理をしようとするも「admin-ajax.php」と言うWordPress備え付けのプログラムでエラーが発生しているようです。
ちなみにこの「admin-ajax.php」は全てのajax処理の一時窓口なので実際にサーバーのログなどを見て見ないとなんでここでエラーが起こっているのか解決するのは難しいです。
※記事へのファイルの追加も、プラグインの更新も、WordPressの更新も、全てこのadmin-ajax.phpを一時窓口として行なっています。
ちなみに4.8.xにバージョンアップした瞬間動かなくなったので、バグの原因は99% WordPressの公式のプログラムによるものです。
この時、一番考えられるのがWordPressの公式がプログラム出荷前にテストを漏らした可能性です。
ではテストはどのようなシチュエーションで漏れやすいのか?
僕は「ブラウザのバージョン」と「PHPのバージョン」の2方向から疑いました。
ただ500番エラーはたいていの場合サーバーサイドに癌があるので、真っ先に疑ったのはPHPのバージョン。
https://secure.sakura.ad.jp/rscontrol/rs/からPHPのバージョンを変更しましょう。
PHP5.4!!!!
とってもダメそうな雰囲気を醸し出しています。
こいつを最新のバージョンにあげてみることにしました。
僕が愛用しているプラグインがPHP7.xに未対応だったので死にました。
ちょっとこのプラグイン脆弱性とか怖いので、プラグインのソースコード流し読みしようかな・・・。
PHP5.4 -> PHP5.6
にすることで解決しました!
僕はPHPマンではないのでPHP5.4からPHP5.6でどんな仕様変更があったのかは存じ上げておりませんが、PHP5.4(化石)に対応していないコードが書かれていたのでしょう。
とりあえず「さくらのレンタルサーバー」を使っていて「WordPressがある日動かなくなった方」はPHPのバージョンをあげて見てください。
最後まで読んでいただきありがとうございます。もしこの記事を気に入って頂けたようであればシェアをお願い致します。非常に励みになります。