Allowed memory size of 134217728 bytes exhausted Error
PHP(Laravel含む)で大きさなサイズのデータを扱うと「Allowed memory size of 134217728 bytes exhausted」エラーが発生することがあります。
DBから大量のデータを取得して変数に代入したり、配列に多くのデータをぶち込んだり、画像や動画などの大きめのバイナリデータを扱ったり。発生要因は様々ですが、メモリの使い過ぎです。
「134217728 bytes」は「134,217,728」=134MBですが、php.iniの「memory_limit」で指定されている「128MB」を超えているよ、というメッセージになります。
これを回避するために「php.ini」を編集します。
php.iniの場所を調べる
サーバーにsshなどで接続し、サーバーコンソールで「php –ini」を実行するとphp.iniの場所(3行目)がわかります。
php --ini
Configuration File (php.ini) Path: /etc
Loaded Configuration File: /etc/php.ini
Scan for additional .ini files in: /etc/php.d
Additional .ini files parsed: /etc/php.d/10-opcache.ini,
/etc/php.d/20-bz2.ini,
/etc/php.d/20-calendar.ini,
/etc/php.d/20-ctype.ini,
php.iniを編集する
「memory_limit」のデフォルトは128MBになっていたので、256MBに変更します。このメモリサイズは作成しているプログラムが必要と思われるサイズを指定してください。
; Maximum amount of memory a script may consume
; https://php.net/memory-limit
; memory_limit = 128M memory_limit = 256M
設定の反映
nginxを使用している場合、PHP-FPMで(FastCGI)で稼働させていると思いますので、先ほどphp.iniに設定した内容を反映させるためにPHP-FPMを再起動します。
systemctl restart php-fpm
コメント