

wordpressで編集しようと思ったら、ブラウザに「HTTP ERROR 500」って出てきた・・・。
編集画面だけじゃなくてブログの方も見られなくなってるし、どうしよう・・・(汗)
となった僕。(と同じ状況かもしれない?あなた!)
とても焦りますよね・・・。
でも大丈夫!
「プログラムとかよくわからん・・・。」という方にも分かりやすく、対処法をお伝えします。
ちなみに、上の画像と違う画面でも、500という数字が入ったエラー画面であれば、同じ状況に陥っています。
結果からお伝えすると、メモリ不足に陥っている可能性が高いです。
ブラウザで500エラーが出た時のブログ環境
僕の環境は、
Google Cloud PlatformのCompute Engineに、VMインスタンスを立てて、「WordPress with NGINX and SSL Certified by Bitnami」コンテナをデプロイしています。
こちら↓のQiitaの記事とほぼ一緒の環境です。(Cloudflareは安定しなかったので使ってません)
このbitnamiさんのサーバー構成にはクセがあって、他の方の書かれた記事のエラーの対処法が、そっくりそのままは使えない場合があるので注意して下さい。
具体的には、安全性を高めるため「.htaccess」を無効化しているみたいです。
もしこのファイルに手を加えるような手順があったら、注意して下さい。
更に、安全性のためphpMyadminにアクセスしづらくなっています。
外部からアクセスできなくなっているため、SSHトンネルを使う必要があります。(設定ファイルを直接弄っている人も居ますが、安全性の観点からおすすめしません。)
具体的なアクセス方法は、別記事に書きたいと思います。
エラーの詳細な現象

500エラーというのは、操作している自分のパソコン(ブラウザ)側のエラーではなく、サイトが設置してあるサーバー側のエラーなんですね。
なので、あなたのパソコンが悪いというわけではないです。
まず、どういう状況で500エラーが起こるか探ってみましょう。
僕の場合は、
- ブログに普通にアクセスした時、500エラーになる
- ブログの管理画面にアクセスした時、500エラーになる
- ページを再読み込みするとアクセスできる時がある
- 記事を書いている時、下書き保存時・公開時・自動保存時に失敗するときがある
といった感じです。
もちろん場合によっては、何度再読込しても500エラーというのもありえます。
管理画面にたまにでもアクセス出来る時と全くアクセス出来ない時では、対処法が変わってきます。
ワードプレスのプラグインで、エラーのアタリを付ける
再読み込みをすれば、管理画面にアクセス出来る時はこの方法を試して下さい。
どう頑張ってもサイトにアクセス出来ないときはこの部分は飛ばして下さい。
まず500エラーの原因として考えられるのが、アクセスが集中している等で、サーバーの処理が追いついていないこと。
なので、再読み込みすればアクセス出来るときがあります。
アクセスをちゃんと捌けておらず、メモリが足りていない可能性があるので、プラグインでチェックしましょう。
管理画面のサイドバーから、【プラグイン→新規追加→「Query Monitor」と検索】して出てきたものをインストールして有効化してください。
画面の上部に、表示が増えるはずです。
こんな感じ。上部のオレンジ色のところです。

そして、オレンジ色のところをクリックすると、詳細画面が出てきますので、上に広げてみましょう。
この画面はエラー対処後なので、数値は気にしないで下さい。

見るべきところは左から2番目、Peak Memory Usageです。
「△△kb 制限中〇〇%kb」って書いてありますよね。
この、〇〇パーセントの部分が100%を超えていたらビンゴです。
メモリが足りず、処理落ちしています。
作って間もないサイトなら、Peak Memory Usage が20~30MB程度の筈です。
1つ前の画像で、オレンジ色になっていた部分に208,417kb(つまり200MBくらい) と書いてありましたが、これは明らかに異常です。
現在の設定を確認してみましょう。
左のバーを見ると、現在選択されているのが概要となっています。
もっと下の方に、環境という部分があるので選択して下さい。

見るべきところは一番左のPHPの下に記載のある、memory_limitの部分。
最近WordPressをインストールした人は同じ数値かもしれません。(昔はもっと小さい)
WordPressを動かすのに使えるメモリが、128MBに制限されています。(**に上書き、と書いてなければ、この場合は256MBですね)
この設定によって、メモリが足りなくなり、ページが表示されない状態になっている可能性が高いです。
原因が推定できましたので、この設定を変えましょう。
サーバーのログをチェックして原因を探る
さて。先程の方法がとれない場合はどうするか。
管理画面にアクセス出来ない場合は、サーバーのログを見に行きましょう。
ちょっと文字ばかりで大変かもしれませんが、コピペで誰でも出来るようにやってみます。
分かる方は、GCP管理画面からSSHでサーバーに入って、
>> ~/stack/nginx/logs/error.log
をチェックしてみてください。
まず、コンソール画面を開きましょう。(GCPに登録したgoogleアカウントでログインしてくださいね)
こんな画面が開けましたでしょうか?

開けたらですね、左上の三本線(ハンバーガーメニューと言います)をクリック。
コンピューティングの中「Compute Engine」→「VMインスタンス」
を開いて下さい。
こんな画面になると思います。

そしたらですね、接続と書いてある下のSSHというところをクリックしましょう。
横の三角ではなく、SSHという文字をクリックしてくださいね。
別のウィンドウで黒い画面が出て来ますよね。
そしたらそこに、下の2行目のコードを貼り付けてEnterを押してみて下さい。
2019/mm/dd hh:mm:ss [error] 10220#0: *11 FastCGI sent in stderr: “PHP message: PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 339968 bytes) in /opt/bitnami/apps/wordpress/htdocs/wp-includes/wp-db.php on line 1972
こんな文が、繰り返しずらずら~っと表示されませんか?
表示されればビンゴです。
「Fatal error: Allowed memory size of 134217728 bytes exhausted …」
の部分が、メモリ不足だと教えてくれています。
何も表示されない場合は、違う原因の可能性があります。
その場合は以下のコードを黒い画面に貼り付けてEnterを押して下さい。
出てきた単語で検索してみましょう。
解決方法が見つかるかもしれません。
サイトの設定を変えて対策しましょう
さて、メモリのエラーだと分かったら、対処しましょう。
そもそもなんでメモリがいっぱいになるのか。
考えられる一番の原因は、プラグインです。
僕の場合もプラグインでした。
ただし、
- プラグインそのものがメモリを食っている場合
- プラグインによって膨れ上がったデータがメモリを食っている場合
があり、
殆どの場合は前者で、問題のプラグインを停止すればもとに戻るんですが、
僕の場合は後者で、手こずりました。
以下2つの対処法を順番に試してみて下さい。
プラグインそのものが原因の場合
この場合は、プラグインたちを一度止めてしまいましょう。
先程のSSHで接続した黒い画面で以下のコードを実行して下さい。
コマンドを実行して、プラグインがすべて停止しました。
これで、管理画面にアクセスしてみて下さい。
アクセスできたらOKです。
管理画面のプラグインのところから、重いプラグイン(今使っているものを調べてみて下さい。)を一旦削除して、もう一度、プラグインたちを有効にしましょう。
再度有効にするのは以下のコマンドです。
メモリを食う重いプラグインを消すことが出来たらめでたしめでたしです。
だめだった場合は、次の手順へ進んで下さい。
プラグインの生成したデータが原因の場合
この場合は以下の手順を取る必要があります。
- メモリを増やして、WordPressが動く状態にし、怪しいプラグインを止めて様子を見る。
- 原因のプラグインを突き止めて、生成したデータを削除する。
とりあえず動けばいいなら、1つ目の対処で大丈夫です。
データの削除までやるのは、なかなか骨が折れます。
僕も最初は、原因のプラグインが全く分からず、数日間悩んでいました・・・。
ということで、1番目の手順。
とりあえず、メモリを増やしてみましょう。
以下のコマンドをSSHの黒い画面で実行して下さい。
「401:memory_limit…」と表示されていますか?
もしかしたら401じゃないかもしれないので、その場合は次のコマンドの401の部分を自分の時の数字に置き換えて下さい。
そしてこれが使用メモリを増やすコマンドです。SSHの画面で以下のコマンドを実行して下さい。
メモリの設定が変更出来ているか、もう一度下のコマンドを実行してみましょう。

こんな表示がされればOKです。
上の行の64Mは気にしないで下さい。256Mという部分が追加されていれば大丈夫です。
この状態で、ブログにアクセスできるはずです。
アクセスしたら、重そうなプラグインを止めてあげましょう。
止めないと、またメモリの消費が増えていって、いつか500エラーが再発してしまいます。
対策は出来たが、原因の特定は・・・。
先程も書きましたが、僕の場合、原因の特定がずっと出来ませんでした。
プラグインを全部止めても、全然メモリ使用量が減らない・・・。
mysqlの、メモリを食うらしいオプションを手動で止めても全然変化なし。
何日も悩みまくって、慣れない英語を読み漁っていたら、ついに判明・・・。
ブログ記事をGitで管理したくて、GitHubと連携するプラグイン、
「WordPress GitHub Sync」が諸悪の根源でした・・・。
同じ状況の方はあまり居ないかもしれませんが、
コチラの対処法は別記事に書きました。
コメント