Magentoを使用していると、PHPメモリが上限値に達してしまうことがあります。
いざそうなったときにどのように対処すればいいか解説します。
こう出たらPHPメモリ不足
そもそもPHPメモリが上限に達してしまう原因は何でしょうか。
以下のようなことが考えられます。
- Magentoエクステンションが多くインストールされていて、PHPプロセスが多数行われている
- プログラムの記載ミス
- メモリリークが起きている
PHPメモリが上限に達するとWEB表示が重くなり、以下のようなメッセージが表示されることとがあります。
Fatal error: Allowed memory size of 792723456 bytes exhausted (tried to allocate 20480 bytes) in /home/webmaster/public_html/vendor/magento/framework/DB/Statement/Pdo/Mysql.php on line 90
必要ないエクステンションを削除する、プログラムの記載ミスをなくすなどが根本的な原因を正すのがいいですが、ひとまずPHPメモリを引き上げて切り抜けることにします。
メモリ上限値はこう確かめる
Magentoのメモリ上限値を確かめるには、以下のようなPHPファイルをMagentoのルートディレクトリに入れましょう。
<?php
phpinfo();
?>
入れたPHPファイルをブラウザで表示させるとこのように出てきます。
memory_limitという項目を探し、左側の数値がMagentoがインストールされているディレクトリのメモリ上限値です。(右側はサーバー全体のPHPメモリ上限値)

メモリを引き上げるにはここを見る
1.php.ini
phpの設定ファイルであるphp.iniを修正してメモリ上限を引き上げます。
; Maximum amount of memory a script may consume (128MB)
; http://php.net/memory-limit
memory_limit = 4096M
memory_limitと書かれた項目を探し、メガバイト単位で数値を変えます。
2.Magentoディレクトリの.htaccess
php.iniを数値を変えてもメモリ上限値が変わらない場合はMagentoディレクトリの.htaccessでメモリ上限値を決めている可能性があります。
php_value memory_limit 256M
.htaccessでこのように書かれていた場合、数値を変えてapacheを再起動します。
3.Magentoディレクトリの.user.iniファイル
ここでもないという場合は、Magentoディレクトリに.user.iniファイルがないか確認しましょう。
memory_limit = 2048M
このように書かれていた場合、数値を変えてapacheを再起動します。
弊社ではMagentoを利用した多機能ECサイトの構築・越境EC/中国越境ECの開発をして企業様をサポートしています。 ご興味ある方は是非問い合わせください。
