MeWrite Docs

PHP: Allowed memory size exhausted

PHPのメモリ制限エラーの解決方法

概要

PHPスクリプトが許可されたメモリ量を超えた場合に発生するエラーです。

エラーメッセージ

PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes)

原因

  1. 大量データ処理: 大きな配列やファイルの読み込み
  2. 無限ループ: メモリリークを引き起こすループ
  3. メモリ制限が低い: php.iniの設定が不足

解決策

1. php.iniで制限を増やす

1
memory_limit = 256M

2. スクリプト内で設定

1
ini_set('memory_limit', '256M');

3. ジェネレータを使用

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
function readLargeFile($path) {
    $handle = fopen($path, 'r');
    while (!feof($handle)) {
        yield fgets($handle);
    }
    fclose($handle);
}

foreach (readLargeFile('huge.csv') as $line) {
    // 一行ずつ処理
}

4. チャンク処理

1
2
3
4
5
6
// LaravelのEloquent
User::chunk(1000, function ($users) {
    foreach ($users as $user) {
        // 処理
    }
});

よくある間違い

  • ファイル全体をメモリに読み込む
  • 不要な変数を解放しない

PHP の他のエラー

最終更新: 2025-12-09