WordPressやプラグインがメモリ不足エラーで停止した場合、解決策はPHPのメモリ上限を引き上げることです。KapsuleHostではこれはファイル編集ではなく、KPanel内のドロップダウンで行います。このガイドでは、エラーの意味、上限の変更方法、選ぶべき値、そしてメモリを増やしても効果がない場合の対処法を解説します。
エラーの表示例
最も分かりやすい形は、ページ上に表示されるか、エラーログに書き込まれる致命的エラーです。
Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 20480 bytes)
バイト数を1,048,576で割るとメガバイト単位になります。268435456は256MB、134217728は128MBです。
必ずしもこれほど明確に現れるとは限りません。同じ根本的な問題が次のような形で現れることもあります。
- メッセージが一切表示されない、真っ白なページ(特定の1画面でのみ発生することが多い)
- WordPressのダッシュボードは読み込まれるが、特定の管理画面(プラグイン、商品、サイトヘルスなど)だけが停止する
- メディアのアップロードやインポートが途中で止まる
- 負荷がかかったときだけ発生する500エラー
何かを変更する前に、本当にメモリの問題であることを確認してください。サイトの設定を開き、PHPタブを選び、PHPエラーログまでスクロールしてログを読み込むをクリックします。すると、レベルフィルター付きで直近200件のログが表示されます。メモリ不足エラーはFatalとして表示されます。ログが空の場合は、別の原因が考えられます。WordPressの白い画面とエラーログの読み方を参照してください。
KPanelで上限を変更する
- KPanelにサインインし、左サイドバーのウェブサイトをクリックします。
- 変更したいサイトをクリックします。
- サイト専用メニューの設定を開き、PHPを選びます。
- PHP設定カード内のメモリ上限の行を見つけます。
- ドロップダウンから値を選びます。
128M、256M、512M、1024M、または2048Mです。 - 設定を保存をクリックします。

再起動は不要で、サイトはその間ずっと稼働し続けます。設定内容はサイトのルートにある.user.iniファイルに書き込まれ、これはKPanelが管理します。
新しい値は必ずしも次のページ読み込みですぐ反映されるとは限りません。サーバーは.user.iniを最大5分間キャッシュするため、古い上限値がまだ表示されている場合は、変更が反映されなかったと判断する前に数分待ってから再確認してください。
同じカードでは、メモリと合わせて調整が必要になることが多い、他の4つの値も管理できます。
| 設定項目 | 選択肢 | 引き上げるべき場面 |
|---|---|---|
| メモリ上限 | 128Mから2048M | メモリ不足の致命的エラー、管理画面の白い画面 |
| 最大実行時間 | 30秒から600秒 | インポート、エクスポート、レポート作成が途中で止まる |
| 最大アップロードサイズ | 16Mから256M | テーマのZIPファイルや動画が大きすぎて拒否される |
| 最大入力変数数 | 1000から10000 | 大きなメニュー、大きなフォーム、バリエーションの多い商品 |
post_max_sizeは表示されません。KapsuleHostが自動的に、常にアップロード上限より1MB大きい値に設定するためで、これによりファイルを上限ぎりぎりまで含むフォームでも問題なく収まります。
どの値を選ぶべきか
KapsuleHostのすべてのサイトは256Mから始まります。これはすでにWordPressの初期値の2倍であり、大多数のサイトには十分です。実際にエラーが発生した場合のみ引き上げてください。
| サイト | 推奨される上限 |
|---|---|
| 軽量なテーマを使ったパンフレットサイトやブログ | 256Mで十分 |
| 20個以上のプラグインを使うページビルダーテーマのサイト | 256M、エラーが続く場合は512M |
| カタログが控えめなWooCommerceストア | 256M |
| サブスクリプション、多くのバリエーション、または重い在庫管理プラグインを使うWooCommerce | 512M |
| マルチサイトネットワークや大規模な会員制サイト | 512Mから1024M |
いきなり2048Mに設定しないでください。非常に高い上限値はサイトを速くするわけではありません。暴走したプラグインが停止するまでにサーバーのリソースをはるかに多く消費できるようになるだけで、1つの壊れたページの問題が、すべての訪問者にとってサイト全体の速度低下につながってしまいます。1段階ずつ引き上げ、再テストし、エラーが解消した時点で止めてください。
wp-config.phpで上限を設定する
KPanelのドロップダウンはサーバー側の上限を設定します。WordPressにはその上限までメモリを要求する独自の定数が2つあり、ドキュメントによってはこれらを設定するよう案内している場合があります。
define( 'WP_MEMORY_LIMIT', '256M' );
define( 'WP_MAX_MEMORY_LIMIT', '512M' );
WP_MEMORY_LIMITはフロントエンドに適用されます。WP_MAX_MEMORY_LIMITは管理画面に適用され、通常はこちらの方が多くのメモリを必要とします。これらはwp-config.php内の/* That's all, stop editing! */行より上に追加します。追加には設定内のファイルマネージャーにある組み込みエディタを使うか、SFTP経由で行います。
WordPressの定数は、サーバー側の上限を超えることは決してできません。KPanelのドロップダウンが256Mになっている状態でWP_MEMORY_LIMITを1024Mに設定しても、実際には256Mしか得られず、修正したと錯覚するだけです。必ず先にKPanel側の値を引き上げてください。
ほとんどの方にとって、この定数の設定は不要です。KPanelの値を設定し、wp-config.phpには手を加えないでおきましょう。
WooCommerceに関する注意事項
ストアは256Mを超える上限が必要になる最も一般的な理由です。wp-admin内のWooCommerceからステータスを開き、ストア自身が認識している上限値を確認してください。システムステータスレポートには、見えているPHPのメモリ上限が表示され、KPanelでの変更が実際に反映されているかどうかを確認するのに役立ちます。
以下のいずれかに該当する場合は512Mに引き上げてください。
- 1つの商品に数十個のバリエーションがある可変商品
- WooCommerce Subscriptionsや予約管理の拡張機能を使用している
- 決済ゲートウェイのプラグインを2つ以上同時に有効にしている
- バックグラウンドで実行される在庫や会計の同期処理
WooCommerceの管理画面が遅い、またはタイムアウトする場合は、通常メモリと実行時間の両方が原因です。最大実行時間を同時に120秒に引き上げ、WooCommerceの設定にあるキャッシュオプションの利用も検討してください。
PHPバージョンも確認してください
PHPの変更直後にメモリエラーが発生し始めた場合は、バージョン自体が関係している可能性があります。古いプラグインは新しいランタイム上で深刻なメモリリークを起こすことがあります。同じタブの上部にあるPHPバージョンカードには、サイトが現在使用しているバージョンが表示され、PHP 8.4、8.3、8.2、8.1の間で切り替えることができます。
バージョンを変更するとサイトのPHPプールが再起動するため、数秒間のダウンタイムが発生します。詳細はPHPバージョンの変更をご覧ください。
メモリを増やしても解決しない場合
上限を2回引き上げても改善が見られない場合は、何かが本来不要なメモリを消費していることを意味します。以下の手順を順番に確認してください。
- バックアップを取る。 毎回必ず最初にバックアップの取得を行ってください。
- 原因のプラグインを特定する。 1つずつではなく、半分ずつプラグインを無効化します。半分を無効にして再テストし、まだ失敗する方の半分をさらに分割していきます。WordPressタブのプラグインにあるプラグインセーフモードを使うと、プラグインのデータを削除せずに、すべてのプラグインを一度に無効化できます。
- テーマをテストする。 一時的にWordPressの標準テーマに切り替えてみてください。毎回のページ読み込みで重いクエリを実行するテーマは、まさにこのパターンの原因になります。
- サイト全体ではなく、特定の操作に注目する。 インポートだけが失敗する場合、問題はメモリではなく実行時間とバッチサイズです。より小さい単位に分けてインポートしてください。
- ログを確認する。 PHPタブのPHPエラーログには、メモリ不足が発生したファイルと行番号が記録されており、通常はこれだけで原因のプラグインを特定できます。
512Mまで上げてもクリーンなプラグインテストを行っても解決しない場合は、support@kapsulehost.com宛に、サイトのドメイン、致命的エラーの正確な行、そして発生時に何をしていたかを記載してメールしてください。