メモリ上限エラーの対処法
「Allowed memory size of ◯◯ bytes exhausted」というエラーメッセージが表示された場合の対処法を解説します。WordPressで最もよく見られるエラーの1つです。
① このエラーが起きる理由
WordPressはPHPというプログラミング言語で動いており、処理のために一定量のメモリ(PHP Memory Limit)を使用します。何らかの処理が、あらかじめ決められたメモリの上限を超えてしまうと、「Allowed memory size of ◯◯ bytes exhausted(許可されたメモリサイズ◯◯バイトを使い切りました)」というエラーメッセージとともに処理が中断し、画面が真っ白になったり、ページの一部しか表示されなくなったりします。
② よくある原因
- 大量のプラグインを同時に有効化している:プラグインが増えるほど、1回のページ表示で使用するメモリも増えます
- 大きな画像・大量データの一括処理:高解像度の画像を一括アップロード・編集する処理や、CSVでの大量データインポート時に発生しやすい
- 質の低いコードのプラグイン・テーマ:メモリの使い方が非効率なプラグイン・テーマが原因になっている場合もある
- サイト移行・バックアップ処理:サイト全体をエクスポート・インポートする際に、通常より多くのメモリを必要とすることがある
③ メモリ上限を増やす3つの方法
いずれか1つを試し、解決しない場合は次の方法を試してください。
方法1:wp-config.phpを編集する
FTPまたはサーバーのファイルマネージャーでwp-config.phpを開き、「/* 編集が必要なのはここまでです! */」という行の直前に以下を追加します。
define('WP_MEMORY_LIMIT', '256M');
define('WP_MAX_MEMORY_LIMIT', '512M');
WP_MEMORY_LIMITは通常のフロントエンド(訪問者向け画面)用、WP_MAX_MEMORY_LIMITは管理画面・アップデート処理用のメモリ上限です(管理画面側は初期設定で256Mが割り当てられます)。画像の一括編集やプラグイン更新時にエラーが出る場合は、後者も併せて引き上げてください。方法2:.htaccessを編集する
WordPressのルートディレクトリにある.htaccessファイルに、以下の1行を追加します。
php_value memory_limit 256M
方法3:php.iniを編集する(サーバーが対応している場合)
レンタルサーバーによっては、php.iniというファイルを直接編集・アップロードできる場合があります。ファイル内に以下の行を追加、または既存の行を書き換えます。
memory_limit = 256M
④ サーバー側の上限に達している場合
多くの共用レンタルサーバーでは、契約プランごとにPHPメモリの上限があらかじめ設定されており、上記の方法でその上限を超える値を指定しても、サーバー側の設定が優先されて反映されません。多くのレンタルサーバーのコントロールパネルには「PHP設定」「MultiPHP INI Editor」等の項目があり、そこからメモリ上限を確認・変更できる場合があります。設定変更の項目が見当たらない、または変更しても解決しない場合は、契約中のサーバー会社に直接問い合わせて、上限の引き上げが可能か確認してください。
⑤ 再発を防ぐには
- 使っていないプラグインは無効化・削除する
- 大量のデータ処理(一括インポート等)は、アクセスが少ない時間帯に行う
- 画像は事前に適切なサイズに圧縮してからアップロードする(画像最適化テクニックを参照)
- 質の低いプラグインを避け、更新が続いている評価の高いプラグインを選ぶ