PHPのmemORy_limITを変更!メモリ制限のエラーを安全に回避する

[PR]

PHP

サーバーで「Allowed memory size」のようなメモリエラーに直面したことはありませんか?WordPressやPHPで重い処理をするとき、このようなエラーは頻繁に起こります。「PHP メモリ制限 memORy_limIT 変更」という検索キーワードで探している方は、具体的な変更方法、現在の制限値の確認、安全な値の選び方、エラーが出ないようにするベストプラクティスを知りたいはずです。この記事では、今すぐ使える手順と注意点を詳しく解説します。

PHP メモリ制限 memORy_limIT 変更の基本とは

PHPのmemory_limit設定は、スクリプトが使用可能なメモリ量の上限を決める重要なディレクティブです。通常、php.iniによって決まっており、多くのホスティング環境で128Mや256Mがデフォルト値です。変更はphp.ini、.htaccess、PHP-FPMプール構成、そしてini_set関数を使って実行可能です。PHP 8.5以降では新たにmax_memory_limitという設定が導入され、memory_limitの上限を固定する用途に使えます。memory_limitを-1にすると無制限になりますが、max_memory_limitで制限されている場合はその値が適用されます。

memory_limitとは何か

memory_limitはPHPにおけるスクリプト実行時の最大メモリ使用量を定義する設定値です。過剰なメモリ消費を防ぎ、サーバー資源を守る役割があります。デフォルトは128Mで、INI_ALLという可変性を持ちますので、php.iniだけでなくini_setやサーバー設定ファイルでも変更可能です。

max_memory_limitの新機能

最近のPHPバージョンでは、memory_limitに対する上限を設定するmax_memory_limitが導入されました。これにより、memory_limitを不適切に高く設定しすぎないよう制御できます。max_memory_limitが-1の場合は制限なしとなりますが、通常はこの設定を使って運用上の上限を設けることが推奨されます。

WordPressでのメモリ制限との関係

WordPress内ではWP_MEMORY_LIMITとWP_MAX_MEMORY_LIMITという定数があり、前者はフロントエンド、後者は管理画面用のメモリ要件に使われます。これらはPHPのmemory_limitを上回ることはできず、PHP側の制限に制約されます。管理画面の操作やプラグイン更新などではより高いメモリが必要ですので、WP_MAX_MEMORY_LIMITを適切に設定することが望まれます。

memORy_limIT変更に必要な確認ポイントと現在値の調べ方

memORy_limITを安全に変更する際にはまず、現状の設定を確認する必要があります。設定値がどこで定義されているか(php.ini、.user.ini、PHP-FPMプール、あるいはホスティングの管理画面)を把握し、WP_MEMORY_LIMITやmax_memory_limitの存在、どこまで変更可能かを調べます。確認なしに変更を行うと、設定が反映されなかったり意図しない影響が生じたりします。

phpinfoや管理画面で現在のmemory_limitを確認する方法

まずphpinfo関数を使い、Loaded Configuration Fileを確認して現在読み込まれているphp.iniの場所を特定します。同時にmemory_limitの値、max_memory_limit(導入されている場合)、WP_MEMORY_LIMITおよびWP_MAX_MEMORY_LIMITの定義をWordPressのSite Healthツールで調べます。これにより、今の制限値と変更可能範囲が明らかになります。

ホスティング環境による制約の把握

共有ホスティングではサーバーレベルでmemory_limitが固定されており、ユーザー側で上げられないことがあります。管理画面にPHP設定項目があるか、サポートへ問い合わせ可能かどうかを確認することが大切です。VPSや専用サーバーなら自由度が高いですが、PHP-FPMのプール設定やサーバーメモリ総量にも注意が必要です。

エラー発生時に確認すべき内容

メモリエラーが出た際は、どの処理で落ちたか、どのプラグインが関与しているか、テーマが重いか、画像処理やインポート処理など特定の操作が原因かどうかをログで確認します。また、WP_DEBUGを有効にして詳細な情報を得ると原因特定が早くなります。根本原因を見ずにメモリだけ増やすと、同じ問題が再発する可能性があります。

memORy_limITを変更する具体的な手順

実際にmemORy_limITを変更するにはいくつかの方法があります。それぞれの手順には利点と注意点があるため、環境に応じて最適なものを選ぶことが重要です。ここではWordPressサイトで使われる代表的な手法を複数紹介します。

wp-config.phpにWP_MEMORY_LIMITとWP_MAX_MEMORY_LIMITを追加する方法

WordPressのルートディレクトリにあるwp-config.phpを編集し、終端の「/* That’s all, stop editing! Happy publishing. */」より前に次の定数を追加します。例えばdefine(‘WP_MEMORY_LIMIT’, ‘256M’);とdefine(‘WP_MAX_MEMORY_LIMIT’, ‘512M’);です。これにより前者はフロントエンド、後者は管理画面でのメモリリクエストとなります。ただし、PHP側のmemory_limitがこれらの値未満の場合は適用されません。

php.iniを編集する方法

サーバーにアクセスできる場合はphp.iniを開き、memory_limitディレクティブを探して値を変更します。たとえば128Mから256Mへ。変更後はPHP-FPMやApacheなど、PHPを処理しているサービスを再起動する必要があります。これにより全スクリプトに対して新しい制限が反映されます。

.user.iniまたは.htaccessを利用する方法

php.iniにアクセスできない共有ホスティング環境では、WordPressのルートフォルダに.user.iniを置いてmemory_limit = 256Mのように記述する方法があります。Apacheモジュール方式なら.htaccessでphp_value memory_limit 256Mと書くこともできますが、PHP-FPMでは無効なことが多いため注意が必要です。

ホスティングパネルやプロバイダへの依頼を使う方法

cPanel、Pleskなどのホスティング管理画面にはPHP設定(memory_limit)を変更できる項目があることが多いです。もしユーザーにその権限がない場合はサポートに必要なメモリ値を伝えて依頼します。また専用サーバーやVPSならrootアクセスを用いて構成を直接編集できます。

安全にmemORy_limITを選ぶ基準と目安値

ただやみくもにmemory_limitを高く設定するのはおすすめできません。サーバーリソースの無駄遣いになる場合があり、多くのPHPプロセスがメモリを使いすぎてホスト自体の性能を落とす可能性があります。ここでは安全な範囲の目安値と選定方法を解説します。

サイトの種類別 推奨メモリ上限

小規模なブログであれば128M程度で十分ですが、ページビルダーを多用するサイトやWooCommerceなどを使っている場合は256M~512Mが現実的です。マルチサイト構成や大規模なインポート処理、画像処理を重視するならば512M以上も検討対象となりますが、その際はサーバーメモリとのバランスを必ず確認してください。

max_memory_limitでの上限設定の注意点

PHP 8.5にはmax_memory_limitという新しい設定があり、これはmemory_limitを上げられる最大の制限値を定めます。この上限が設定されていると、wp-config.phpなどでさらに高い値を指定してもそのmax_memory_limit値に抑えられます。したがって、memory_limitとmax_memory_limitの両方を意識しながら設定することが重要です。

複数PHPプロセスによる総メモリ使用量の管理

PHP-FPMなどで複数の子プロセス(worker)が同時に動作する場合、それぞれがmemory_limitを最大で使う可能性があります。例えばmemory_limitを256M、pm.max_childrenを20にすると、理論上5GBのメモリが必要になるという計算になります。このためプロセス数やサーバーの物理メモリを考慮して制限を選ぶことが求められます。

memORy_limIT変更時のトラブルとその解決策

memORy_limITの設定変更で問題が解決することが多いですが、稀に意図通りに動かないことがあります。変更が反映されない、エラーが継続する、サーバーが不安定になるなどです。ここではよくあるトラブルとその対処を整理します。

設定が反映されない場合の原因

よくある原因はPHP側での上限が低すぎることです。wp-config.phpで大きな値を定数として定義しても、php.iniで設定されたmemory_limitがそれより低ければそちらが優先されます。また、PHP-FPMプール設定でphp_admin_valueで固定されていたりmax_memory_limitによって制限されていることもあります。

特定プラグインやテーマが原因のケース

テーマやプラグインがメモリリークや重い処理を含んでいる場合があります。このような場合は、一時的に該当プラグインを無効化し、テーマをデフォルトテーマに切り替えて問題の再現を確認します。ログを見てどの処理がメモリを消費しているか解析すると根本原因が見えてきます。

サーバーリソース不足による影響

memory_limitを上げた結果、負荷が増えて他のプロセスがスワップを使ったり、ホスト全体の性能に影響が出たりすることがあります。特に1台サーバーで多数のサイトをホスティングしている環境では注意が必要です。必要ならリソースの拡張、キャッシュの導入、CDNの活用を視野に入れます。

変更前後で確認すべき検証項目とベストプラクティス

memORy_limITを変更した後には、必ず動作確認とログによる検証を行います。変更して終わりではなく、どのように動いているかを把握することで予期しないトラブルを防げます。ここでは確認すべきポイントを整理します。

Site HealthやPHP情報での反映確認

WordPressのダッシュボードにあるSite Healthツールのサーバー情報から現在のPHP memory_limit、WP_MEMORY_LIMIT、WP_MAX_MEMORY_LIMITの値を確認します。またphpinfo出力を使ってmemory_limitとmax_memory_limitが設定通りかチェックすることが望ましいです。

エラーログおよびデバッグモードの活用

WP_DEBUGを有効にし、エラーログにメモリエラーや関連する警告がないかを確認します。特定のプラグインで負荷が高い処理があるなら、その処理を追跡します。再現性のある操作を手順化して原因分析を行うことで、ムダなメモリ消費を抑えられます。

パフォーマンスの測定と改善

memory_limitの変更前後でサイトの応答速度やサーバー負荷(CPU・メモリ使用率)をモニタリングします。キャッシュプラグインを導入したり、画像最適化、不要なプラグインの整理を行うことも併用すると、memory_limitをそれほど高くしなくても安定運用が可能です。

まとめ

memORy_limIT(正しくはmemory_limit)の設定変更は、WordPressサイトでよく見られるメモリエラーを回避するために非常に重要です。変更前に現在のPHP memory_limitやmax_memory_limit、WP_MEMORY_LIMITやWP_MAX_MEMORY_LIMITの関係を確認し、安全な範囲の値を選ぶことが対象エラー発生後の混乱を防ぎます。

具体的には、まずwp-config.phpでの定数設定、次にphp.iniまたは.user.ini/.htaccessでの設定、さらにはホスティングパネルやプロバイダとの調整を行うことが有効です。memory_limitを無闇に高くしすぎるよりも、必要な範囲で調整し、その後サイトの動作とサーバー負荷を確認する運用がベストです。

本記事で紹介した内容は最新情報を元にしていますので、安全で効果的な設定変更が可能なはずです。正しい設定を行い、PHPメモリ制限のエラーから開放されるサイト運営を目指して下さい。

関連記事

特集記事

コメント

この記事へのトラックバックはありません。

TOP
CLOSE