「Fatal error: Allowed memory size…exhausted」エラーの対処方法【WordPressトラブル】
WordPress サイトでブラウザ画面に次のようなエラーが表示され、画面の一部(または全部)が表示されなくなる場合があります。
Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 134217736 bytes) in /home/<user name>/<site url>/public_html/wp-includes/formatting.php on line 604 |
この記事では、WordPress がインストールされたレンタルサーバーを使用している方向けに、このエラーの原因と対処方法を説明いたします。
Allowed memory size of … exhausted の原因
WordPress は PHP というプログラミング言語で記述され、動作しています。
このエラーは、サーバー上で PHP プログラムが実行された際、「プログラム実行用に割り当てられたメモリを使い切ってしまった」場合に表示されます。
Fatal error が発生すると、PHP はプログラム(この場合は WordPress)の処理を止めてしまいますので、WordPress が正常に動作せずに画面真っ白、という状態になるわけです。
ひどい場合には、管理画面すら表示できない場合もあります。
そのため、このエラーを解消するには次の2通りの方法があります。
対処方法1:WordPress が使用するメモリを減らす
まずは、何をやったらエラーが出るようになったかを、冷静に考えてみてください。
- 新しいプラグインをインストールした
- 新しい記事を投稿した(特定の記事でエラーがでている)
- 記事に新たにコードなどを追加した
などでエラーが発生することがありますので、その原因を取り除いていきます。
WordPress のプラグインを停止する
WordPress のプラグインは便利ですが、あれもこれもと使いすぎると、メモリを大量に消費する重いサイトになりがちです。
新しいプラグインをインストールしたあとにエラーが発生するようになった場合は、そのプラグインを停止して、エラーが解消されるかを確認します。
解決しない場合や新しいプラグインを追加していない場合は、インストールされているプラグインを1つずつ停止して、エラーが解消されるかを確認します。
新規投稿や追記した記事を修正する
新しい記事を投稿したり、記事に文章・画像・コード(SNS の埋め込みコードなど)などを追加した際に、ページが使用するメモリ量が増えてエラーが発生する場合があります。
そのようになった場合は、次の方針で確認します。
- 記事に文章、画像、SNSの埋め込みコードなどを追加してからエラーが出るようになった場合は、追加したものを消して、エラーが解消されるか確認します。
- エラーが解消されない場合や元に戻せない場合は、該当記事を一旦削除して、新規に作り直します。内容をコピーしてメモ帳などに保存しておくと、再作成がラクですね。
WordPress テーマのウィジェットなどを変更してからエラーが出るようになった場合は、ウィジェットを外すなどして解消するか確認してみてください。
対処方法2:WordPress が使用できるメモリを増やす
WordPress が使用するメモリを減らすことができれば、その方が望ましいです。大量のメモリを使えるレンタルサーバーは費用も高くなりますからね。
ただ、それで解決しない場合や、そもそも管理画面が表示されなくなってしまった場合には、WordPress が使用できるメモリ量を増やす必要があります。(どこまでメモリを増やせるかはレンタルサーバーによります)
▼ 追記 ▼ 設定ファイルをパソコン上で直接編集する場合は、メモ帳を使用しないでください。「UTF-8」「BOMなし」の文字コードで読み込み・保存できるテキストエディタが必要です。(サクラエディタなど) |
▼ 注意 ▼ 設定ファイルの変更は、操作を間違えると WordPress が動作しなくなるなどのリスクがありますので、対処方法1で解決できない場合の手段と考えてください。 |
php.ini ファイルで設定を変更する
php.ini は PHP の動作環境を設定するためのファイルです。
このファイルを編集できるレンタルサーバーであれば、メモリ設定を変更することでエラーを解消できる場合があります。
筆者は「エックスサーバー」を利用していますが、エックスサーバーでは管理メニューから php.ini と後述の .htaccess を設定変更することができます。
▼ エックスサーバーでの手順 ▼ 1. サーバーパネルへログインし、「php.ini設定」をクリック。 2. 「php.ini設定変更」タブを選択。 3. 「memory_limit」の値を変更(設定例は後述)して、「確認画面へ進む」をクリック。 4. 設定内容を確認し、間違いがなければ「実行する」をクリック。 |
設定値を冒頭のエラーの場合で考えると、
tried to allocate 134217736 bytes |
134,217,736 bytes(約128Mbyte)を使おうとして、
Allowed memory size of 268435456 bytes exhausted |
割り当てられた 268,435,456 bytes(256Mbyte)を使い切ってしまった。
ということなので、割り当てメモリを 512Mbyte に変更します。
その場合の設定値は、以下になります。
memory_limit = 512M
wp-config.php ファイルで設定変更
wp-config.php は WordPress の動作環境を設定するためのファイルです。
このファイルを編集する場合は、FTP でサーバーに接続して、WordPress インストールフォルダにある wp-config.php をダウンロードします。
※ダウンロードしたファイルは念のためバックアップを取っておいてください。
以下を追記してファイルを保存し、元のディレクトリにアップロードして差し替えます。
(512Mbyte に変更する場合の設定例です)
define('WP_MEMORY_LIMIT', '512M');
.htaccess ファイルで設定変更
.htaccess は Web サイトの動作環境を設定するためのファイルです。
このファイルは、「エックスサーバー」など管理メニューから編集できるレンタルサーバーもあります。
▼ エックスサーバーでの手順 ▼ 1. サーバーパネルへログインし、「.htaccess編集」メニューをクリック。 2. 「.htaccess編集」タブを選択する。 3. 追記したい内容(設定例は後述)を入力して、「確認画面へ進む」をクリック。 4. 設定内容を確認し、間違いがなければ「実行する」をクリック。 |
管理メニューから編集できないレンタルサーバーの場合は、FTP 接続してから、ファイルの編集をします。
ただ、.htaccess は隠しファイルとなっているため、FTP 接続をする場合は、FTP ソフトで隠しファイルを表示するように設定してください。
FTP でサーバーに接続して、WordPress インストールフォルダにある .htaccess をダウンロードします。
※ダウンロードしたファイルは念のためバックアップを取っておいてください。
以下を追記してファイルを保存し、元のディレクトリにアップロードして差し替えます。
(512Mbyte に変更する場合の設定例です)
php_value memory_limit 512M
対処方法2 の方法はすべてする必要はないので、いずれかを試してみて、エラーが解消されるかを確認してください。
それではまた、機会があれば。