サーバー

MagentoでPHPメモリ不足!ここを見てメモリ上限値を上げよう

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メモリ上限値)

phpinfo

メモリを引き上げるにはここを見る

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を再起動します。

弊社ではMagento2を利用した多機能ECサイトの構築・越境EC/中国越境ECの開発をして企業様をサポートしています。 ご興味ある方は是非問い合わせください。

ABOUT ME
タンヤマニゴル
マルウェブシステム担当 会社とMBA兼某資格養成機関で二足の草鞋、「修論どうしよう・・」と日々迷走中のアラサーです

※注意

本ブログの投稿内容に関するお問い合わせをして頂いてもご返信できませんので、何卒ご了承ください。