“Allowed memory size exhausted” hatası, ilgili PHP isteğinin bellek sınırını aştığını söyler. Önce hatayı üreten PHP ortamını bulun: web isteği, cron ve SSH komutu farklı php.ini dosyaları kullanabilir.
1. Web ile CLI değerini ayırın
php --ini
php -r 'echo PHP_VERSION, " ", ini_get("memory_limit"), PHP_EOL;'
Bu çıktı yalnızca CLI içindir. Plesk'te alan adı → PHP Ayarları bölümünden web sürümünü ve memory_limit değerini kontrol edin. Herkese açık phpinfo() dosyası bırakmayın.
2. Hata kaydını okuyun
Örneğin “Allowed memory size of 134217728 bytes exhausted” yaklaşık 128 MiB sınırını gösterir. Hata dosyası ve satırı bir görsel işleme, rapor veya sonsuz veri yükleme işlemine işaret edebilir. Aynı işlemi küçük veri kümesiyle deneyerek büyüklükle ilişkisini ölçün.
3. İlgili ortamda sınırlı artış yapın
Panelden örneğin 128M yerine 256M seçin ve kaydedin. .user.ini destekleyen PHP-FPM/FastCGI ortamında uygulama köküne şu satır konabilir; panelde yönetilen sunucuda önce panel ayarını tercih edin:
memory_limit = 256M
Tek CLI işlemi için:
php -d memory_limit=256M /srv/ornek-uygulama/bin/report.php
CLI bayrağı web sitesinin limitini değiştirmez. .user.ini değişikliği önbellek süresi nedeniyle anında görünmeyebilir. -1 ile sınırsız bellek vermek sunucuyu korumasız bırakır.
4. Neden sürekli limit yükseltmek yetmez?
Her PHP çalışanı yüksek bellek tüketirse eşzamanlı istekler toplam RAM'i aşabilir. Büyük veriyi parçalara bölün; tüm sorgu sonucunu tek fetchAll() ile almak yerine satır veya sayfa halinde işleyin. Büyük resimleri orijinal boyutuyla topluca belleğe açmayın.
Başarı ölçütü
Aynı sorunlu isteği tekrar çalıştırın; hata kaydının kesildiğini ve işlemin çıktısının tam olduğunu doğrulayın. Sunucuda swap/oom artıyorsa önceki limiti geri alın ve uygulama tüketimini düzeltin.
Bilgiyi uygulanabilir projeye dönüştürelim.
İhtiyacınızı teknik, operasyonel ve ticari açıdan değerlendirip doğru çözüm yol haritasını birlikte oluşturalım.
Projenizi Anlatın



