PHP Fatal error: Allowed memory size exhausted
PHPでメモリ制限を超えた場合に発生するエラー
概要
PHPスクリプトがphp.iniで設定されたメモリ制限を超えた場合に発生するエラーです。
エラーメッセージ
PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 65536 bytes)
原因
- 大量のデータ処理: 大きなファイルや配列をメモリに読み込み
- 無限ループ: 終了しないループでメモリを消費し続ける
- メモリリーク: オブジェクトが解放されない
- 再帰の深さ: 深い再帰呼び出し
解決策
1. php.ini でメモリ制限を増加
| |
2. スクリプト内で一時的に増加
| |
3. .htaccess で設定(Apache)
| |
4. 大きなファイルはストリーム処理
| |
5. データベースクエリの最適化
| |
6. 不要な変数を解放
| |
7. ジェネレーターを使用
| |
よくある間違い
- 開発環境と本番環境でメモリ制限が異なる
- Composerのメモリ不足(COMPOSER_MEMORY_LIMIT=-1)
- 画像処理ライブラリのメモリ消費を考慮していない
PHP の他のエラー
この記事は役に立ちましたか?