"Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes)" mesajı, çalışan PHP betiğinin kendisine izin verilen bellek miktarını aştığını gösterir. Mesajdaki ilk sayı bayt cinsinden sınırdır: 134217728 bayt 128 MB eder. İkinci sayı, sınır aşıldığı anda ayrılmaya çalışılan ek bellek miktarıdır.
Bu sınırı PHP'nin memory_limit ayarı belirler; WordPress kullanıyorsanız buna ek olarak WP_MEMORY_LIMIT ve WP_MAX_MEMORY_LIMIT sabitleri devreye girer. Aşağıda sınırın nereden geldiğini, cPanel, php.ini, .user.ini ve .htaccess ile nasıl artırılacağını ve sınırı artırmanın neden her zaman doğru çözüm olmadığını anlatıyoruz.
memory_limit nedir, varsayılan değeri nedir?

PHP kılavuzuna göre memory_limit, bir betiğin ayırabileceği en fazla bellek miktarını bayt olarak belirler ve kötü yazılmış betiklerin sunucudaki belleği tüketmesini önler. Varsayılan değer 128M, değiştirilebilirlik türü INI_ALL'dur; yani php.ini, dizin bazlı yapılandırma ve çalışma anında ini_set() ile değiştirilebilir. Sınırı tamamen kaldırmak için -1 kullanılır, ancak bu canlı sunucuda önerilmez. Değerlerde K, M ve G kısaltmaları kullanılabilir.
Hosting firmaları bu değeri farklı ayarlayabilir; sizin sunucunuzdaki gerçek değeri aşağıdaki yöntemlerle kontrol edin.
Ziyaretçiyseniz
Bu hata sitenin sunucusunda oluşur ve sizin cihazınızla ilgisi yoktur. Sayfayı daha sonra tekrar deneyin veya site sahibine hata mesajını ve saatini iletin. WordPress sitelerinde aynı hata genellikle "Sitenizde ciddi bir sorun çıktı" ekranı olarak görünür.
WordPress bellek sabitleri: WP_MEMORY_LIMIT ve WP_MAX_MEMORY_LIMIT

WordPress, PHP'nin sınırını kendi sabitleriyle yükseltmeye çalışır. Kaynak koddaki (default-constants.php) varsayılanlar şöyledir:
| Sabit | Varsayılan | Nerede kullanılır |
|---|---|---|
WP_MEMORY_LIMIT | Tek site: 40M, multisite: 64M | Sitenin genel (ön yüz) istekleri |
WP_MAX_MEMORY_LIMIT | 256M (PHP sınırı zaten 256M üstündeyse veya -1 ise o değer) | Yönetim alanı ve görsel işleme gibi ağır işlemler |
Önemli ayrıntı: WordPress memory_limit değerini yalnızca kendi değeri PHP'ninkinden büyükse yükseltir; PHP sınırını hiçbir zaman düşürmez. Yani PHP sınırı 128M ise ve WP_MEMORY_LIMIT 40M ise site 128M ile çalışır. Hosting firması memory_limit değerinin değiştirilmesini engellediyse WordPress sabitleri işe yaramaz.
Bu adımda wp-config.php, .htaccess veya veritabanı üzerinde değişiklik yapacaksanız önce yedek alın. Dosyayı kendi bilgisayarınıza indirmek ya da cPanel Dosya Yöneticisi ile bir kopyasını oluşturmak yeterlidir; veritabanı için phpMyAdmin dışa aktarma veya panelinizin yedek aracını kullanın.
// wp-config.php: "That's all, stop editing!" satırından önce
define( 'WP_MEMORY_LIMIT', '256M' );
define( 'WP_MAX_MEMORY_LIMIT', '512M' );WordPress belgeleri bu sabitlerin wp-settings.php dahil edilmeden önce tanımlanması gerektiğini belirtir; bu yüzden dosyanın alt kısmındaki "stop editing" satırının üstüne yazın.
Mevcut sınırı nasıl görürsünüz?
- WordPress Site Sağlığı: Araçlar > Site Sağlığı > Bilgi sekmesinde Server bölümü PHP bellek sınırı gibi sunucu değerlerini, WordPress Constants bölümü de WP_MEMORY_LIMIT ve WP_MAX_MEMORY_LIMIT değerlerini gösterir. Bu ekran yalnızca bilgi verir, ayar değiştirmez.
- cPanel MultiPHP INI Editor: Basic Mode ekranında seçtiğiniz konum için geçerli değerleri görürsünüz.
- phpinfo(): geçici bir dosyayla PHP'nin gerçekte kullandığı değeri ve hangi php.ini dosyasının yüklendiğini görebilirsiniz.
<?php
// bilgi.php: kontrol ettikten sonra hemen silin
phpinfo();phpinfo çıktısında memory_limit satırında iki sütun vardır: Local Value o dizinde geçerli olan değerdir, Master Value ana php.ini değeridir.
Sınırı artırma yolları

1. cPanel MultiPHP INI Editor (en kolay yol)
- cPanel'de Software bölümündeki MultiPHP INI Editor arayüzünü açın.
- Basic Mode sekmesinde konum menüsünden Home Directory (tüm siteler) veya ilgili alan adını seçin.
memory_limitdeğerini örneğin256Myapın ve Apply düğmesine basın.
cPanel belgelerine göre bu arayüz ayarı, desteklediği ölçüde php.ini, .user.ini ve .htaccess dosyalarına yazar ve bu üç dosya birbirinin aynısı olmayabilir. Sunucuda LSAPI kullanılıyorsa .htaccess dosyasına LSAPI için ayrı bir bölüm eklenir. Görünen değerler PHP sürümüne göre değişir. Arayüzün size açık olup olmadığını barındırma firmanız belirler.
2. php.ini veya .user.ini
Kendi sunucunuzu yönetiyorsanız ana php.ini dosyasını düzenleyip PHP servisini (örneğin PHP-FPM) yeniden başlatın. Paylaşımlı hostingde ise dizin bazlı .user.ini dosyası kullanılır. PHP kılavuzuna göre .user.ini dosyaları yalnızca CGI/FastCGI SAPI (PHP-FPM bunu kapsar) tarafından okunur; PHP, istenen betiğin klasöründen başlayarak belge köküne kadar bu dosyayı arar. Dosyalar varsayılan olarak 300 saniyede bir (user_ini.cache_ttl) yeniden okunur, bu yüzden değişikliğin etkisi beş dakikayı bulabilir.
; public_html/.user.ini
memory_limit = 256M3. .htaccess içinde php_value (yalnızca belirli kurulumlarda)
PHP kılavuzu php_value yönergesinin PHP Apache modülü (mod_php) olarak çalışırken Apache yapılandırmasında ve .htaccess dosyasında kullanılabildiğini, bunun için "AllowOverride Options" veya "AllowOverride All" yetkisi gerektiğini belirtir. PHP-FPM veya başka bir FastCGI kurulumunda bu yönerge PHP'ye ulaşmaz; Apache tanımadığı yönerge yüzünden 500 hatası verebilir. Böyle sunucularda .user.ini kullanın. LiteSpeed Web Server ise kendi PHP işleyicisiyle .htaccess içindeki php_value satırlarını işleyebilir ve yönetici bunu DisablePhpOverride ile kapatabilir. cPanel belgeleri PHP 8.0 ve sonrasında DSO (mod_php) işleyicisinin desteklenmediğini de not eder.
# .htaccess (yalnızca mod_php veya LiteSpeed PHP için)
php_value memory_limit 256MHangi PHP işleyicisini kullandığınızı bilmiyorsanız phpinfo çıktısındaki Server API satırına bakın veya barındırma firmanıza sorun. Apache ve .htaccess ayrıntıları için .htaccess rehberimize, PHP-FPM havuz ayarları için PHP-FPM yapılandırma yazımıza bakabilirsiniz.
Hata logunu okumak ve suçluyu bulmak
Hata mesajı genellikle sınırın aşıldığı dosyayı ve satırı da gösterir. Bu dosya her zaman belleği tüketen asıl kod olmayabilir, ama güçlü bir ipucudur. WordPress'te WP_DEBUG_LOG ile wp-content/debug.log dosyasına kayıt alabilirsiniz; ayrıntılar için WordPress kritik hata rehberimize bakın.
PHP Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 65536 bytes)
in /home/kullanici/public_html/wp-content/plugins/eklenti-adi/inc/rapor.php on line 118| Neden | Belirti | Çözüm |
|---|---|---|
| Sınır gerçekten düşük | Sınır 64M veya 128M; büyük bir tema veya sayfa oluşturucu kullanılıyor | memory_limit ve WP_MEMORY_LIMIT değerini makul ölçüde artırın (örneğin 256M) |
| Bellek sızdıran veya çok sorgu yapan eklenti | Sınırı artırsanız da hata yine gelir; hep aynı eklenti dosyası görünür | Eklentiyi güncelleyin, devre dışı bırakıp test edin, alternatife geçin |
| Büyük görsel işleme | Görsel yüklerken veya küçük resim oluşturulurken hata | Görseli yüklemeden önce küçültün; WP_MAX_MEMORY_LIMIT değerini kontrol edin |
| Ağır içe aktarma veya yedekleme | Yalnızca içe aktarma, yedek veya rapor sırasında | İşlemi parçalara bölün, WP-CLI veya sunucu tarafı araç kullanın |
| Ayar uygulanmıyor | phpinfo Local Value eski değeri gösteriyor | Doğru dosyayı (php.ini, .user.ini, .htaccess) ve PHP işleyicisini kontrol edin |
Sınırı artırmak neden her zaman çözüm değildir?
Sınırı 256M'den 1G'ye çıkarmak hatayı bir süre ortadan kaldırabilir; ancak sorun bir döngüye giren, her istekte binlerce kaydı belleğe yükleyen veya belleği serbest bırakmayan bir eklentiyse sorunu yalnızca erteler ve gizler. Her PHP süreci daha çok bellek kullanabildiği için aynı anda daha az isteğe yanıt verilebilir, bu da siteyi yavaşlatır veya sunucunun başka bir sınırına takılmasına neden olur.
Sık Sorulan Sorular
WP_MEMORY_LIMIT ekledim ama değer değişmedi. Neden?
WordPress yalnızca PHP'nin memory_limit değerini değiştirmesine izin veriliyorsa ve kendi değeri daha büyükse sınırı yükseltir. Hosting firması değiştirmeyi kapattıysa sabit etkisiz kalır; bu durumda cPanel MultiPHP INI Editor kullanın veya firmanıza başvurun. Satırın "stop editing" yorumundan önce olduğundan da emin olun.
memory_limit değerini -1 yapmak güvenli mi?
PHP kılavuzu -1 değerinin sınırı kaldırdığını belirtir. Canlı sitede bu, hatalı bir betiğin sunucudaki belleği tüketmesine izin verir. Sınırsız yerine somut bir değer kullanın.
Hata yalnızca yönetim panelinde çıkıyor. Hangi değeri artırmalıyım?
Yönetim alanında WordPress WP_MAX_MEMORY_LIMIT değerini kullanır; varsayılanı 256M'dir. Hata buradaysa bu sabiti kontrol edin, ancak PHP'nin memory_limit değerini yükseltmesine izin verildiğinden emin olun.
Değişiklik ne zaman etkili olur?
php.ini değişikliği PHP servisi (örneğin PHP-FPM) yeniden başlatılınca, .htaccess değişikliği hemen, .user.ini değişikliği ise varsayılan olarak beş dakikaya kadar etkili olur.
Yazılım, tarayıcı ve hizmet adları sahiplerine aittir. Bu yazı bağımsız bir teknik rehberdir; adı geçen şirketlerle ortaklık ilişkisi bulunduğu anlamına gelmez.
İlgili içerikler: WordPress kritik hata çözümü · upload_max_filesize hatası · PHP-FPM yapılandırma · PHP nedir? · wp-config.php sabitleri · 500 Internal Server Error