sunucuhataları
teknik çözüm merkezi
Ara Giriş Yap Üye Ol
🏠 Ana Sayfa 📚 Kurulum Rehberleri
Kategoriler
🌐 Web Sunucuları 🐧 İşletim Sistemleri 📦 Sanallaştırma & VPS 🖥️ Kontrol Panelleri 🔒 SSL & Güvenlik 📝 CMS & Uygulamalar 🗄️ Veritabanı 📧 Mail Sunucusu 🗨️ Forum ℹ️ Hakkımızda 📧 İletişim
Giriş Yap Üye Ol
Ana Sayfa Web Sunucuları PHP Fatal Error: Allowed Memory Size Exhausted ...
🌐 Web Sunucuları

PHP Fatal Error: Allowed Memory Size Exhausted Nasıl Çözülür?

PHP memory_limit değeri aşıldığında bu hata oluşur. php.ini, .htaccess veya wp-config.php üzerinden kolayca çözülebilir.

📅 10 Ocak 2025 👁 70 görüntülenme ⏱ 5 dk okuma
𝕏 Paylaş
📋 İçindekiler göster/gizle

PHP Hafıza Hatası Nedir?

PHP Fatal Error: Allowed Memory Size of X bytes exhausted hatası, bir PHP uygulamasının çalışırken izin verilen maksimum bellek sınırını aştığında ortaya çıkar. PHP her HTTP isteği için memory_limit direktifiyle belirlenmiş bir bellek kotasına sahiptir. Bu kota aşıldığında PHP betiği durdurup bu hata mesajını döndürür.

Varsayılan memory_limit değeri PHP sürümüne ve hosting ortamına göre 32MB, 64MB veya 128MB olarak gelebilir. Yoğun veri işleyen uygulamalar, WordPress gibi eklenti tabanlı sistemler, büyük görsel işleme operasyonları ve kapsamlı veritabanı sorguları bu limitin aşılmasına neden olur. Örneğin WordPress'te 40-50 aktif eklenti olan bir site, her sayfa yüklemesinde 200MB'ı aşkın bellek kullanabilir.

Hata mesajı genellikle şu formatta görünür:

Fatal error: Allowed memory size of 134217728 bytes exhausted
(tried to allocate 20971520 bytes)
in /var/www/html/wp-includes/class-wp-image-editor.php on line 422

134217728 bayt 128MB'a, 268435456 bayt 256MB'a karşılık gelir. Hata mesajında gösterilen satır numarası, belleğin tüketildiği PHP dosyasını işaret eder; ancak asıl sorun genellikle o dosyayı çağıran kod ya da tüketimi tetikleyen uygulama mantığındadır.

Bu hata kesinlikle sunucunun fiziksel belleğinin dolduğu anlamına gelmez. Sadece tek bir PHP betiği için ayrılmış limit aşılmıştır. Sunucunuzda 32GB RAM olsa bile memory_limit = 128M ayarıyla bu hatayı alabilirsiniz.


Olası Nedenler

  • memory_limit değeri çok düşük ayarlanmış (32MB veya 64MB gibi)
  • WordPress eklentilerinin toplam bellek tüketimi limiti aşıyor
  • GD Library veya ImageMagick ile büyük görseller işleniyor
  • WooCommerce büyük ürün katalogları veya sipariş listeleri çekiyor
  • PHP kodunda bellek sızıntısı (memory leak) mevcut
  • Büyük CSV, XML veya JSON dosyaları bellekte parse ediliyor
  • Shared hosting ortamında sunucu tarafından bellek kısıtlanmış
  • OPcache kapalı, her istekte PHP dosyaları yeniden derleniyor

Çözüm Adımları

1. php.ini ile Memory Limit Artırma

En kalıcı ve önerilen yöntemdir. Önce PHP'nin hangi php.ini dosyasını kullandığını bulun:

php --ini | grep "Loaded Configuration"
# veya
php -r "echo php_ini_loaded_file();"

Dosyayı açıp memory_limit satırını güncelleyin:

nano /etc/php/8.2/fpm/php.ini
# Şu satırı bulun:
memory_limit = 128M
# Şu şekilde değiştirin:
memory_limit = 256M

Değişikliği uygulamak için servisi yeniden başlatın:

# Apache için
sudo systemctl restart apache2
# PHP-FPM için
sudo systemctl restart php8.2-fpm

2. .htaccess ile Artırma (Apache)

Sunucuya doğrudan erişiminiz yoksa veya sadece belirli bir site için geçerli olmasını istiyorsanız, site kök dizinindeki .htaccess dosyasına ekleyin:

php_value memory_limit 256M

Not: Bu yöntem yalnızca Apache mod_php ile çalışır. Nginx + PHP-FPM ortamında etkisizdir.

3. wp-config.php ile WordPress'te Artırma

wp-config.php dosyasını açın ve /* That's all, stop editing! */ satırından önce ekleyin:

define('WP_MEMORY_LIMIT', '256M');
define('WP_MAX_MEMORY_LIMIT', '512M');

WP_MAX_MEMORY_LIMIT, WordPress yönetici panelindeki büyük import ve güncelleme işlemleri için ek bellek sağlar.

4. PHP Kodunda Runtime Artırma

Belirli bir script için geçici olarak belleği artırmak istiyorsanız:

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

Bu yöntemi sadece geliştirme aşamasında ve belirli ağır scriptler için kullanın.

5. cPanel MultiPHP INI Editor

cPanel kullananlar için grafik arayüzden ayar yapmak mümkündür:

  • cPanel → Software → MultiPHP INI Editor bölümüne gidin
  • İlgili PHP sürümünü veya domain'i seçin
  • memory_limit değerini 256M olarak ayarlayın
  • Apply butonuna tıklayın

6. Plesk PHP Ayarları

Plesk kullananlar için:

  • Plesk → Websites & Domains → İlgili domain
  • PHP Settings bölümüne tıklayın
  • memory_limit satırını bulun, 256M olarak güncelleyin
  • Değişiklikleri kaydedin

7. PHP-FPM Havuz Yapılandırması (Nginx)

Nginx + PHP-FPM kullanıyorsanız havuz yapılandırmasına ekleyin:

nano /etc/php/8.2/fpm/pool.d/www.conf
# Dosyanın sonuna ekleyin:
php_admin_value[memory_limit] = 256M
sudo systemctl restart php8.2-fpm

Özet ve Önleyici Tedbirler

  • Memory limit artırmak geçici çözümdür; asıl sorunu (ağır eklenti, verimsiz kod) araştırın
  • WordPress için 256M genellikle yeterlidir; büyük e-ticaret siteleri için 512M uygundur
  • Sınırsız bellek (memory_limit = -1) production ortamında kullanmayın
  • WordPress Query Monitor eklentisi ile hangi eklentilerin çok bellek tükettiğini tespit edin
  • PHP 8.x sürümleri daha verimli bellek kullanımı sunar, güncelleyin
  • OPcache etkinleştirerek bellek tüketimini optimize edin
  • Kullanılmayan WordPress eklentilerini devre dışı bırakın veya silin

İlgili Makaleler

🤔 Bu kurulumda sorun mu yaşıyorsunuz?

Hata mesajınızı kopyalayıp foruma konu açın. Topluluğumuz size özel durumunuza göre yardımcı olacaktır.

🗨️ Foruma Katıl & Yardım Al
Etiketler: #wordpress #nginx #cpanel #php

Yorumlar

Henüz yorum yok. İlk yorumu siz yapın!

Yorum Yap

Yorumunuz onaylandıktan sonra yayınlanır.