エラーの中身
PHP Fatal error: Allowed memory size of xxx bytes exhausted(xxx の数字は環境によって違います)
PHP が使ってよいメモリの上限を超えた、というエラーです。バックアップ・画像の処理・プラグインの重い処理などで出やすく、画面が真っ白になったり、「重大なエラーが発生しました」と出たりします。
wp-config.php でメモリの上限を上げる
// サイトの表のページなどで使うメモリの上限 define( 'WP_MEMORY_LIMIT', '256M' ); // 管理画面の重い処理(画像の処理・更新など)で使うメモリの上限 define( 'WP_MAX_MEMORY_LIMIT', '512M' );
| 定数 | 使われるところ | 書かないとき |
|---|---|---|
| WP_MEMORY_LIMIT | サイトの表のページなど、ふだんの処理 | 40M |
| WP_MAX_MEMORY_LIMIT | 管理画面の重い処理(画像の処理・更新など) | 256M(PHP の上限がそれより大きければ PHP の上限) |
WordPress は、PHP の上限より大きい値のときだけ上限を上げます。小さい値を書いても下がりません。また、サーバーが上限の変更を許していないときは、書いても効きません。そのときは、サーバーの管理画面(PHP の設定の memory_limit)で上げます。
今の上限を確認する
管理画面の「ツール → サイトヘルス → 情報」で、「サーバー」のPHP のメモリ上限と、「WordPress 定数」の WP_MEMORY_LIMIT・WP_MAX_MEMORY_LIMIT が見られます。
確認した結果
作業環境(WordPress 7.1)で、PHP の上限をわざと 64M にして、WordPress を読み込みました。
| 試したこと | PHP の上限 |
|---|---|
| 読み込む前 | 64M |
| WP_MEMORY_LIMIT を 256M にして読み込んだあと | 256M に上がった |
| 管理画面の重い処理のとき(wp_raise_memory_limit) | WP_MAX_MEMORY_LIMIT の 512M に上がった |
書かないときの値(40M・256M)と、下げないこと・変更が許されていないと効かないことは、WordPress のコード(wp-includes/default-constants.php)で確認しました。
上げたら、エラーになった処理をもう一度試す
Duplicator でバックアップを取っている途中にこのエラーが出たときは、上の設定をしてからもう一度実行して、メモリのエラーが出なくなりました。
上げっぱなしにするか、終わったら戻すか
いつも重い処理をするサイトなら、上げたまま使います。一時的な処理(バックアップや移行など)のときだけ上げたいなら、終わったら元に戻しておきます。
上限を上げても直らないときは、プラグインの不具合でメモリを使い続けていることもあります。どのプラグインのときに出るかを、1 つずつ止めて確認します。

