WordPressが時々500エラーを吐き出す問題について調べてみた件


WordPressのシェアはすごいことに!

全Webサイトの3割以上がWordpressで作られていると言われている昨今。

当然制作依頼される案件にもWordpressで!という案件が増えています。逆にWordpressというだけで安心される場合も増えていて、どんどん簡単なサイトに関してはバックエンドエンジニアがいなくてもWebサイトが構築できていく世の中になっています。

そんな便利なWordpressですが、当然メリットがあればデメリットもありまして、セキュリティー面ではハッキングされる事象がよく見受けられます。

以前にもWeb制作会社のホームページでWordpressのバージョンアップをしていなかったためにハッキングされて書き換えられたとか、某地方自治体のサイトが管理画面のログインページにセキュリティー対策をしていなかったため、パスワードアタックをされてサイトが乗っ取られたなどいろいろ事件はある少し怖いシステムでもあります。

それもWordpressのシェアが大きいためハッカーに狙われやすいのだと思います。

昔のWindowsとMacの関係を見ているようです。

そういえば、昔AppleのCMでMacはコンピューターウイルスにかからないなんて自虐ネタのCMをやっていたのを思い出します。

 

WordPressって怖いの?

ここまでざざっと書いてみましたが、これだけ見るとWordpressって怖いCMSツールだなぁって思った人もいるかもしれません。

少し矛盾するかもしれませんが、本当に怖くて使いにくいのであればこれほど爆発的にシェアは増えませんのでご安心ください。

ただ作ればあとは放置でいいというものではなく、日々のWordpressやそのPluginのバージョンアップが必要不可欠ですので、信用できる方に依頼する方が安心かと思います。

 

WordPressで500エラーが時々起きる

そんなWordpressで500エラーつまりInternal Server Errorというものが時々起こる場合があります。

このInternal Server Errorというものは日本語に訳すと「内部エラーが発生している」というエラーです。

 

500エラーってどういう時に起こるの?

500エラーが起こる原因として考えられるものはいくつかありますが、その代表的なものは下記のものになります。

  1. .htaccess の記述ミス
  2. CGIファイルやディレクトリのパーミッションに設定ミス
  3. サーバーのアクセス過多
  4. WordPressのバグ
  5. メモリ容量オーバー
  6. Pluginの相性

 

3のサーバーのアクセス過多というのはアクセス数の増加にWordpressの載っているサーバーの許容オーバーになりますので、簡単な方法はサーバーの乗り換えになります。

ただサーバーを乗り換えになるとなかなか時間とコストがかかりますし、一度サイトを停止しないといけないこともあるかと思いますので、サーバーの乗り換えには注意が必要です。

1のhtaccessの記述ミスも設定を失敗すると表示されなくなりますので、こちらも注意が必要なのといつでも戻せるようにバックアップは取っておいた方がいいと思います。

いろいろと500エラーがでる理由はあるのですが、今回目を付けたのは5のメモリー容量オーバーです。

サーバーのアクセス過多にも似ている原因ですが、今回設置してるWordpressにさくらのクラウドサーバーに約15サイトのWordpressを設置しています。

WordPress自体が必要メモリー容量を考えるとこの辺なのかなぁって思いました。

それぞれはあまりアクセスはないので、アクセス過多というよりはWordpress自体を動かすのに必要なメモリーが供給されていないのかと考えました。

本当はWordpressの「wp-config.php」のデバッグモードをTrueにして確認するのも手ですが、まずは最初にここから調査します。

 

WordPressに必要なメモリーはいくつ?

WordPressにはメモリーを設定している場所があります。

それは

/wp-includes/default-constants.phpというPHPファイルなのですが、ここの32行目あたりにmemory_limitを設定するプログラムが書かれています。

調べてみるとWordpressのデフォルトで設定されているメモリーはシングルサイトで40MB、マルチサイトで60MB、管理画面では256MBが設定されているようです。

つまりこれより使用できるメモリー数が少ないと500エラーになることが想定されます。

 

どうやってメモリー設定変えるの?

では、どうやってメモリー設定を変えるかなのですが、Wordpressには下記の設定があります。

サイトのPHP環境設定(php.iniなど)がWP_MEMORY_LIMITで設定されている値よりサイズが大きい場合はWP_MEMORY_LIMITの設定値が無効となりPHP環境設定の値を有効になります。

つまり、Wordpress側の設定を変えなくてもサーバー側のPHP環境設定を256MBより大きい設定にすればそちらにひっぱられるということになります。

「簡単じゃん!!!」

って思った方はたぶんphp.iniの変更をできる方かと思います。

今回もさくらのクラウドサーバーを利用しているのでphp.iniの変更は可能です。

しかし、すべての方がphp.iniを変更できる環境にいるわけではないと思います。

例えば、会社のサーバーでphp.iniは情報システム課やサーバー管理課みたいなところで一括管理されていて、依頼するにしてもかなりの手順が必要な方もいらっしゃることかと思います。

そこで、FTPは触れる環境でなにか方法はないかと考えたところ、便利な.htaccessくんのことを思い出しまいた

 

メモリーの設定変更

.htaccessを開いて、どこでもいいの(大体は一番上か一番下に書きますがw)で、下記のコードを書きます。

ここでは管理画面な必要な256MBとシングルサイトに必要な40MBを足して余裕を持てるように512MBを設定します。

memory_limit = 512M

を記述します。

これでサーバー側のメモリーの使用量が増えたと思いますので次のWordpress側にもメモリーの使用量のMAX値を設置します。

wp-config.phpを開いて下記のコード記述します。

define('WP_MEMORY_LIMIT', '512M');
define('WP_MAX_MEMORY_LIMIT', '512M');

これでWordpressのPHPが使用するメモリーに余裕ができたので500エラーが起きにくくなったのではないかと思います。