WordPressの500エラー対応

WordPressのセキュリティ対策として有名なプラグイン「SiteGuard WP Plugin」を導入し、設定変更をしている最中に意図せず500エラー(Internal Server Error)が発生してしまいました。その際に対応した内容を履歴として残しておきます。

エラー発生

先のプラグインでは色々とセキュリティ強化することができます。その中で「XMLRPC防御」の項目があり、XMLRPC全体を無効化しました。

その瞬間に・・・

あっ・・・やってしまった。

解決方法

まぁ焦りますよね。。。

ただ直前の作業はわかっているので原因は明らかです。十中八九、XMLRPC全体を無効化してしまったことですね。

この場合の解決方法は2つ。

  1. バックアップを使って、設定変更前の状態に戻す。
  2. WordPressの設定を管理画面を通さずに直接修正して、XMLRPC無効化を解除する。

毎日バックアップ(スナップショット)を取得しているので、1.で解決可能です。ただ、それなりの作業になるかもしれないので、2.を模索してみることにしました。

500エラーが発生した場合には、まずエラーログを確認しましょう。

Apacheのエラーログ(/var/log/apache2/error.log)を確認したところ、

[Tue Nov 17 13:48:35.695344 2020] [core:alert] [pid 25073:tid 140175055968000] [client xxxx] /var/www/html/.htaccess: Require not allowed here, referer: https://blog.bassbone.tokyo/wp-admin/admin.php?page=siteguard_protect_xmlrpc
[Tue Nov 17 13:48:37.677557 2020] [core:alert] [pid 25073:tid 140175055968000] [client xxxx] /var/www/html/.htaccess: Require not allowed here, referer: https://blog.bassbone.tokyo/wp-admin/admin.php?page=siteguard_protect_xmlrpc

というエラーが大量に出ていました。

「/var/www/html/.htaccess」に何かあるのでは??ということで、次は該当の.htaccessを確認してみましょう。

確認したところ、気になる部分が・・・

#==== SITEGUARD_DISABLE_XMLRPC_SETTINGS_START
<Files xmlrpc.php>
    <IfModule authz_core_module>
        Require all denied
    </IfModule>
    <IfModule !authz_core_module>
        Order allow,deny
        Deny from all
    </IfModule>
</Files>
#==== SITEGUARD_DISABLE_XMLRPC_SETTINGS_END

コメント部分にXMLRPC設定とあるので、これが怪しい。ひとまずこの部分を削除してみました。

その結果・・・

復活!!!

色々試した結果、「ピンバック無効化」であればエラーは発生しないようです。

たしかに注意文言として「XMLRPC全体を無効化すると、XMLRPCを使用したプラグインやアプリの使用ができなくなります。」とありますが、まさか自身が使えなくなるとは・・・

セキュリティ対策のための設定となるとコアな部分も触るので、このような事象は想定しておくべきですね。今回は運良くファイルを直接編集して復活しましたが、どうしようもない場合もありますので、バックアップは忘れずに取るようにしましょう!