Fatal error: Allowed memory size of 134217728 bytes exhaustedエラーの発生原因と対処した方法

エラーメッセージの意味

このエラーメッセージは、PHPのスクリプトが許可されたメモリの上限に達したことを示しています。具体的には、「Fatal error: Allowed memory size of 134217728 bytes exhausted」というエラーメッセージが表示されていますが、このメッセージの中に含まれる数字(134217728)はメモリの上限をバイト単位で示しています。

エラーの発生原因

PHPスクリプトが使用するメモリ量が、サーバーの設定で許可されたメモリサイズを超えたためです。このエラーは、メモリを多く消費する処理(大量のデータ処理、画像処理など)が実行される際に特に起こりやすいです。

実際に発生した時の状況

実務案件で記事の「編集」ボタンをクリックしたときに、「のサイトで重大なエラーが発生しました」とメッセージが表示された。

いただいた権限が「編集者」だったため「管理者」に変更してもらうと記事の編集画面には進めるようになった。

しかし「更新」をクリックしても「更新に失敗しました。」となり更新されない。

wp-config.phpでdefine( 'WP_DEBUG', true );に変更し確認したところAllowed memoly size ~のエラーだと判明しました。

実際にどう対処したのか

サーバーはロリポップでした。

「PHP設定」でPHPのバージョンの横の「CGI版」と「モジュール版」があるが「CGI版」であることを確認する。

バージョンの横の「設定」に進んでいただき一番下の項目に「php_value, php_flagを利用可能にする」という項目があるので「On」にする。

.htaccessに下記を追加するとエラーが解消される。

php_value memory_limit 512M
php_value post_max_size 512M
php_value upload_max_filesize 512M

All in One Migrationでロリポップサーバーに移行する時もアップロード上限が低いので.htaccessに上記を追加してアップロード上限を上げると良い。

他の対処方法

プラグインを不必要に入れすぎない

プラグインがメモリを多く消費している可能性があります。不要なプラグインを無効にしたり、代替のプラグインを検討することで問題が解決することもあります。

契約プランやサーバーの見直し

対処法として安いプランから高いプランへアップグレードしたり別のサーバーに移転することが考えられます。

まとめ

Allowed memory size of 134217728 bytes exhaustedエラーはPHPのスクリプトが許可されたメモリの上限に達したという意味のエラーでした。Fatalエラーなので、PHPのプログラムを停止します。今回はロリポップサーバーで対処した実務経験での話になりましたが、プラグインを不必要にインストールしない。サイトが成長してきたらサーバーのプランや移転を考えるといったことを考える必要があります。

他のPHPエラー

他のPHPエラー

PHPのエラーの種類について解説しています。具体例や解決方法については順次更新していきます。

依頼があった月の実務経験

23年2月依頼実績

2023年2月に依頼があった案件の実績を掲載しています。

>お問い合わせはこちら

お問い合わせはこちら