こんなエラーが、管理画面で記事タイトルをクリックすると出たケースを解決しました
Fatal error:Allowed memory size of 2635456 by eexhausted(tried to allocate 225280bytes) in /publichtml/wp/wp-includes/class-wpdb.php online2459
このサイトで重大なエラーが発生しました。対応手順については、サイト管理者のメール受信ホックスを確認してください。
開けない、保存できないなどの不便が発生します。
Contents
原因
PHPの設定メモリーが少ないため。
Elememtorなどのリッチなページビルダーで大きなページを作っていて、そのリビジョン数が4桁を超えたあたりでいきなり発生したそうです。
サーバー管理画面や、php.iniで設定するPHPの実行メモリが少なく、リビジョンデータの方がサイズが大きくなった場合、編集画面を開こうとしたり、あるいは、保存をかけようとした場合に500エラーが発生します。
対応
PHPの設定項目
memory_limit
の値を増やすと解決します。
- php.ini に書いた場合はサーバー単位で効く
- .htaccessに書いた場合は、ディレクトリ単位
- wp-config.php に書いた場合は、wordpress単位
- php コード内に書いた場合は、php実行プログラム内
になります。
どれで設定したらいいの?という質問ですと、上が範囲が広く、下に向けて範囲が狭まっています。
なので、下記の設定例ですと、レンタルサーバーならXサーバーの設定例、あるいはphp.iniに設定しておくとよいです。
設定例 1GBに設定
Xサーバーの場合
php.ini に書く場合
memory_limit=1G
.htacceess に書く
php_value memory_limit 1G
WordPress の wp-config.php に書く
define('WP_MEMORY_LIMIT', '1G');
PHPプログラム内で、「PHP.ini」のメモリ上限設定
<?php
ini_set('memory_limit', '1G');
確認方法
echo ini_get('memory_limit');
関連
リビジョンの上限を設定するという合わせ技もあります。
リビジョンとは?
WordPressのリビジョンは、投稿やページを編集する際に自動的に作成される保存ポイントのことです。
これにより、編集前の状態に戻すことができ、編集履歴を確認できます。
リビジョンは、デフォルトでは無制限に保存されるため、編集が多い場合はデータベースが肥大化する可能性があります。