WordPressの管理画面を操作していると、突然500エラーが返却されるようになり焦りました。
平日の朝に起きたので、
仕事前に疲れましたわ……。
今回は備忘録として経緯と対処法を残します。
経緯
私は現在、2つのブログを運営しています。
もう一方のブログの方に技術系の記事もあるので、当サイトへ移行する計画を立てました。
全量をスプレッドシートで管理しようと思い、URLを全て抽出するプラグインの導入を計画しました。
設定で、プラグインのインストール前にFTPのパスワードを入力するようにしています。
そのパスワードの入力に2回失敗し、3回目で成功しました。
しばらく待つと、画面の様子がおかしい。
500エラーを返してきています。
管理画面どころか、サイトトップ自体もアクセスできない状況に……!
確認したこと
まずは落ち着いて、原因を絞り込んでいきます。
そもそも、500エラーって何だっけ?
『500(Internal Server Error)エラー』といい、サーバ側のプログラムの不具合によって返却されるHTTPレスポンスです。
要するに、サーバ側で何らかの不具合が起きているよ、ということを返してくれているわけですね。
サーバは起動しているのかな?
今回のサーバは、ConoHa VPSを契約しています。
ConoHa VPSの管理画面へログインし、サーバが稼働していることを確認しました。
うん、オッケー。
サーバは稼働してる。
500エラーなので、サーバが起動していないとそもそも返却できないレスポンスです。そりゃそうですね。
『そりゃそうだ』と分かっていても、念のため確認しておくことは大切です。念には念を。
ログに何か吐き出していないかな?
次にサーバのログを確認しました。
エラーが起きていたら、何かしらのログ(記録)が残っているはずです。
WebサーバにNginxを利用しているため/Wordpress/log/nginx/ssl_error.log
を確認しました。
アクセスした時間帯を確認してみたところ、以下のようなログが吐き出されていました。
2023/09/27 06:58:02 [error] 25909#0: *3045084 FastCGI sent in stderr:
"PHP message: PHP Warning: require_once(/WordPress/wp-config.php): Failed to open stream:
Permission denied in /WordPress/DocumentRoot/wp-load.php on line 55PHP message:
PHP Fatal error: Uncaught Error: Failed opening required '/WordPress/wp-config.php'
(include_path='.:/usr/local/php8.0/lib/php') in /WordPress/DocumentRoot/wp-load.php:55
Stack trace:
#0 /WordPress/DocumentRoot/wp-blog-header.php(13): require_once()
#1 /WordPress/DocumentRoot/index.php(17): require('/...')
#2 {main}
thrown in /WordPress/DocumentRoot/wp-load.php on line 55" while reading response header from upstream, client: xxx.xxx.xxx.xxx, server: xxx.com, request: "GET / HTTP/2.0", upstream: "fastcgi://127.0.0.1:9000", host: "xxx.com"
エラーにもあるとおり、パーミッションエラーのようです。
対処方法
wp-config.phpの権限を 440→644 へ変更
まとめ
以下、推測になります。
最初のプラグイン導入時に何かしらの不具合が生じて、wp-config.phpの権限が勝手に440に書き変わってしまったと考えられます。
パスワードを複数回間違えてしまったため、セキュリティ対策として何かしら権限を書き換えるような設定になってしまっていたのか。。。
明確な原因は未だ不明ですが、プラグインをインストールする際(FTPパスワード入力に成功)に発生したため、プラグイン起因と睨んでいます。
しかし、pluginディレクトリ配下にはそのプラグインが追加されていなかったため、やっぱりWordpress側かな?と睨んでいたり。
曖昧な状態ですが、一旦解決したのでひと安心です。