Bir sayfayı ya da eklenti ekranını açarken karşınıza uzun bir satır çıkıyor. İçinde ‘Allowed memory size of … bytes exhausted’ gibi bir şey yazıyor. Türkçesi, PHP’ye tanınan bellek sınırının dolduğu. Site o anki işi yapmak için gereken hafızayı bulamadığı için yarıda duruyor.
WordPress her istekte sunucunun belleğinden bir parça kullanır. Eklentiler, tema, çalışan sorgular, hepsi bu havuzdan pay alır. PHP’nin kullanabileceği bellek bir tavanla sınırlıdır. İşlem bu tavanı aşmaya çalıştığında sunucu durur ve size o hata mesajını verir. Mesajın sonunda genellikle hangi dosyanın hangi satırda sınırı aştığı da yazar, bu bilgi işinize yarar.
Belleği ne tüketir
- Çok sayıda eklentinin aynı anda çalışması. Her biri küçük bir pay alsa da toplamı sınırı zorlar.
- Bellek tüketimi yüksek tek bir eklenti. Sayfa oluşturucular, yedekleme ve içe aktarma araçları bu konuda cömerttir.
- Ağır bir tema ya da çok fazla özellik yükleyen bir yapı
- Barındırma paketinizin PHP için ayırdığı belleğin baştan düşük olması
- Büyük görsellerin işlenmesi ya da toplu medya işlemleri
Çözüm için adımlar
- İlk ve en pratik adım WordPress bellek sınırını yükseltmek. wp-config.php dosyasını açın ve ‘That’s all, stop editing!’ satırının üstüne şunu ekleyin: define(‘WP_MEMORY_LIMIT’,’256M’); Bu, WordPress’in kendine ayırdığı sınırı 256 megabayta çeker ve çoğu durumda yeterlidir.
- Bu yetmezse sunucu düzeyindeki memory_limit değerine bakın. php.ini dosyanıza erişiminiz varsa memory_limit satırını 256M ya da gerekirse daha yükseğe çekin. Çoğu paylaşımlı barındırmada php.ini yerine hosting panelinden PHP ayarları bölümü kullanılır, oradan da değiştirebilirsiniz.
- Değişiklik sonrası sınırın gerçekten arttığını görmek isterseniz WordPress panelindeki Araçlar bölümünde Site Sağlığı sayfasına bakın. Sunucu bilgileri arasında güncel bellek sınırı görünür.
- Sınırı yükseltmek sorunu geçici olarak örtebilir ama asıl belleği yiyen şeyi bulmak daha kalıcı bir çözümdür. Eklentileri FTP ile tek tek pasif ederek hangisinden sonra hatanın kaybolduğunu tespit edin. Suçlu çoğu zaman tek bir eklentidir.
- Bellek açlığı yaratan eklentiyi bulduysanız ya hafif bir alternatifiyle değiştirin ya da gerçekten gerekli değilse tamamen kaldırın. Pasif bırakmak yerine silmek hem bellek hem güvenlik açısından daha temizdir.
- Çok sayıda eklenti ve karmaşık bir tema kullanıyorsanız listeyi gözden geçirin. İşlevi örtüşen eklentileri tekleştirmek, kullanmadıklarınızı atmak belleği rahatlatır.
Küçük bir uyarı. Sınırı sürekli yükseltip 512M, 1024M diye tırmanmak her zaman doğru yol değil. Paylaşımlı barındırmada zaten bir üst sınır vardır ve onu aşamazsınız. Bellek açlığı normal bir sitede 256M ile çözülmüyorsa, altta yanlış davranan bir eklenti ya da kod parçası var demektir. Önce onu aramak gerekir.
Hatanın hangi anda çıktığı da yol gösterir. Bellek sınırı mesajı yalnızca belirli bir eklentinin ekranında çıkıyorsa suçlu neredeyse bellidir. Site genelinde ya da her sayfada çıkıyorsa iş daha çok temel yapılandırmadadır, sınırın baştan düşük olmasıdır. Mesajın sonundaki dosya yolunu okumayı ihmal etmeyin. Orada çoğu zaman hangi eklentinin klasöründe sorunun patladığı açıkça yazar ve bu tek satır sizi doğruca kaynağa götürür.
Tekrar yaşamamak için
Eklenti sayınızı makul tutun ve gerçekten kullandıklarınızla sınırlı kalın. Büyük görselleri siteye yüklemeden önce boyutlandırıp sıkıştırmak hem belleği hem sayfa hızını rahatlatır. Barındırma paketinizin ayırdığı bellek baştan düşükse, siteniz büyüdükçe bu hatayla sık karşılaşırsınız, böyle bir durumda daha geniş kaynak sunan bir plana geçmek yerinde olur.
Bellek sınırı hatası ilk bakışta ürkütücü görünse de çoğu zaman tek satırlık bir ayarla ya da tek bir eklentiyi değiştirerek çözülür. İş sunucu yapılandırmasına kadar uzanıyor ve kendi başınıza ilerleyemiyorsanız, bir uzmandan destek almak işi netleştirir.
Bu işleri kendiniz yapmak yerine profesyonel destek isterseniz, WordPress bakım ve teknik destek hizmetime göz atabilirsiniz.
Bu konunun tüm rehberi: WordPress Hataları ve Çözümleri