PHP スクリプトは開発が早く、広く使用されていますが、重要な欠点もあります。不適切に作成されたスクリプトは大量のサーバー メモリを消費する可能性があり、同じマシン上で実行されている他のサービスに影響を与える可能性があります。
これが、PHP が memory_limit 設定を通じて各スクリプトのメモリ制限を定義する理由です。
PHP の memory_limit 設定とは何ですか?
memory_limit 値はスクリプトごとに適用されます。言い換えれば、これは 1 つの PHP スクリプトが消費できるサーバー メモリの最大量です。
公式の PHP ドキュメントでは、これについて次のように説明されています。これは、スクリプトが消費できるメモリの最大量をバイト単位で設定し、不適切に作成されたスクリプトによって利用可能なサーバー メモリがすべて使い果たされるのを防ぐのに役立ちます。
たとえば、制限が 128M に設定されている場合、7 つのスクリプトはそれぞれ 80M を使用できます。
これらは合計で 128 MB をはるかに超えて消費しますが、制限に違反しています。しかし、あるスクリプトで突然 130M が必要になった場合、
致命的エラー: 許可されたメモリ サイズ x バイトが使い果たされました (x バイトを割り当てようとしました)
または:
PHP 致命的エラー: メモリ不足 (x が割り当てられました) (x バイトを割り当てようとしました)
DirectAdmin で PHP メモリ制限を増やす方法
最初の質問は常に、メモリ使用量が妥当かどうかです。そうでない場合、最も賢明な修正は、単に制限を引き上げるのではなく、スクリプト自体を修正することかもしれません。ワークロードが正当であると確信できる場合は、VPS またはサーバー構成を調整できます。
次の基本的な手順に従います:
ステップ 1: 使用中の PHP 構成ファイルを見つけます。簡単な確認方法は次のとおりです:
/usr/local/bin/PHP --ini | grep 'ロードされた設定ファイル'
デフォルトの PHP CLI バージョンを使用している場合、ファイルは通常、
にあります。
/usr/local/lib/PHP.ini
ステップ 2: memory_limit 行を編集し、目的の値を設定します。存在しない場合は追加します:
memory_limit = 128M
アプリケーションが実際に必要とする値に値を調整し、ファイルを保存します。 SSH セッションから nano などのエディターを使用できます。
ステップ 3: Apache または関連する PHP サービスを再起動して、変更を有効にします。
その他の関連する PHP 設定
POST サイズも増やす必要がある場合は、
を確認してください。
post_max_size = 8M
より大きなファイルのアップロードを許可する必要がある場合は、 レビュー:
upload_max_filesize = 2M
結論
PHP のメモリ制限には正当な理由があります。これがないと、不適切に書かれたスクリプトがすべてのサーバー リソースを消費し、重大な問題を引き起こす可能性があります。ただし、環境がより強力で、アプリケーションが本当により多くのメモリを必要とする場合は、適切な構成ファイルを慎重に編集することで、スクリプトあたりの最大量を増やすことができます。