PHP Out of Memory Hatası ve Çözümü Nedir? PHP out of Memory hatası nedir? PHP out of hatası Memory çözümü? Bloğumun alt yapısında kullandığım gibi birçok web sitesin de wordpress yönetim paneli kullanılmaktadır. Wordpress açık kaynaklı bir sistem olduğundan dolayı sürekli olarak geliştirilip yeni sürümleri yayımlanmaktadır. Durum böyle olduğundan wordpressinizin almış olduğu her güncelleme sonrasında kesin olmasan çok büyük bir ihtimalle çeşitli sorunlarda oluşmaktadır. Wordpress hataları arasında en yaygın olan PHP out of memory hatası ile karşılaştığınızda neler yapmanız gerektiğini bu yazımda anlatacağım.
Web site dosyalarını barındırdığınız sunucuda herhangi bir teknik sorun oluştuğunda sorunun neyden kaynaklandığını, hangi satırda, hangi dosyada vb. bilgileri görebileceğiniz bir error_log dosyası bulunmaktadır. Error_log dosyasının içerisinde sadece sunucu ile ilgili sorunlar değil, web sitenizde faaliyet gösteren eklentiler, temalar, bileşenler gibi sitemiz için gerekli olan şeylerin hata ile karşılaşması durumunda hatanın neden kaynaklandığını, hangi kod satırında olduğunu belirten satırlar bulunmaktadır.
Error_log dosyamda karşılaşmış olduğum hata şu şekildedir;
[09-jan-2021 19:23:10 UTC] PHP Fatal error: Out of memory (allocated 10363541) (tried to allocate 32768 bytes) in /home/anadizin/public_html/wp-includes/post.php on line 5475
Karşılaştığımız bu hatanın bize demek istediği, web site dosyası olan post.php dosyasındaki 5475. Satırdaki kod parçacığını çalıştırmaya çalıştığım zaman 10363541 bayt boyutunda bir istek de bulunuyor PHP ayarındaki boyut ise yalnızca 32768 bayt boyutunda gelen istekleri karşılayabiliyor. Bu sebeple gelen iste out of memory hatasına düşüyor.
Out of Memory Hatası Nasıl ve Neden Ortaya Çıkıyor?
Out of Memory Hatası Nasıl ve Neden Ortaya Çıkıyor?, Öncelikle out of Memory hatasını çözebilmemiz için bu hatanın neden kaynakladığını bilmemiz gerekmekte. Genellikle out of Memory hatası ile karşılaşmamızın nedeni PHP kodlarındaki hafızaların sınırlandırılmasından dolayıdır. PHP’nin bunun hafızalara sınırlandırma koymasının nedeni ise fazla PHP isteklerinin önüne geçmektir. Sınırlandırmayı yaptığı dosya ise php.ini dosyasıdır.
PHP hafıza limiti ne dediğinizi duyar gibiyim, Bu hafıza limiti ne oluyor? Web siteniz tarafından PHP işleyicisine gelecek olan isteklerin hangi boyutlarda olmasının belirlemektedir. Gelen istekleri PHP geçici olacak bir şekilde kendi önbelleğine alarak işlenmelerin sıra ile yapılmasını sağlamakta. Geçiçi olarak önbelleğe alınan isteklerin boyutunu PHP memory_limit sayesinde belirleyerek önbelleğin daha hızlı bir şekilde çalışmasını sağlamaktadır.
PHP Memory büyüklükleri 64M’den başlayıp 512M’ye kadar gitmektedir. Ancak genellikle sunucuların hepsi 128M’yi kullanmaktadırlar. Genellikle sunucuların belirlemiş oldukları değer yeterli olmakta ancak bazı durumlarda yeterli olmuyor bu durumlarda limiti yükseltmediğimiz sürece yapmak istediğimiz işlemi yapamazsınız. Dilerseniz şimdi PHP out of Memory hatasının nasıl düzelteceğinizin anlatımına geçelim.
PHP Out of Memory Hatası Çözümü?
PHP Out of Memory Hatası çözümü için iki farklı Yöntem bulunmaktadır. Bu yöntemlerden ilki ve kesin sonuç alacağınız yöntem, php.ini dosyasındaki limit sınırlanması yapılan kod satırını bulup orada değişiklik yapılması veya Apache/nginx’in baştan kurulup veya onarılması ve sunucu güvenli bir şekilde yeniden başlatılmalıdır. İkinci yöntem ise yalnızca paylaşımlı hosting kullanan web site sahiplerinin yapması gereken bir adımdır. Cpanel üzerinden select PHP version eklentisi ile gerekli onarım işlemlerinin yapılmasıdır.
1.Yöntem php.in dosyasını onarma
Web sitenizin dosyalarını herhangi bir sanal sunucu üzerinde barındırıyorsanız eğer, sunucu kontrolü sizin elinizde olduğundan dolayı aracı bir programa ihtiyaç duymadan php.ini dosyanız üzerinde gerekli değişiklikleri yapabilirsiniz.
Bu işlemi yapabilmek için sunucunuzun PHP ayarlarındaki php.ini dosyasını bulup memory_limit kod parçacığını bulun ve sizlere aşağıda vereceğim kod parçası ile değiştirin.
memory_limit = 512M
Burada en yüksek değer vermemizin nedeni daha sonra tekrar out of memory hatası ile karşılaşmamanızdır.
Vermiş olduğum değere ek olarak 64M, 128M, 198M, 256M, 368M ve 512M değerlerini dilerseniz kod parçacığına yazabilirsiniz. 128M sunucular tarafınca tercih edilen bir değerdir.
Sizin php.ini dosyanızdaki limit değeri ne ise en yüksek değer ile değiştirip php.ini dosyanızdaki değişiklikleri kaydedip, apache/nginx’i onararak sunucunuza reset atarak out of memory hatasını ortadan kaldırabilirsiniz.
2.Yöntem Selec PHP versiyon özelliği ile düzenleme
Anlatacağım bu yöntem 1.yönteme göre çok daha basit. Ancak bu yöntemi yapabilmeniz için hosting firmanızdan gerekli izinleri almanız gerekmektedir. İzin alma işlemlerini yaptıktan sonra yapmanız gerekenler;
- Hosting firmanızdan almış olduğunuz bilgiler ile Cpanel’ e giriş yapın ve karşınıza çıkan panelden, Select PHP version sekmesine giriş yapın,
- Karşınıza gelen bölümden ise switch to PHP options linkine tıklayın.
Belirtmiş olduğum bu yolları yaptıktan sonra karşınıza web sitenizin PHP ayarlarının çıktığını göreceksiniz. Çıkan bu ayarlardan memory_limit satırını bulup karşılığındaki değere bir kez tıklayıp karşınıza çıkan panelden istediğinizi seçin ve kaydedin. Dosyadaki değişiklikleri de kaydettikten sonra, karşılaşmış olduğunuz out of memory hatasından kurtulmuş olacaksınız.
WordPress Memory Limit Hatası
Asıl en çok merak edilen soru ise WordPress’ de Memory Limit Hatası Nasıl Giderilir? Bunu yapmak sunucunun hafızasını yükseltmeye göre çok basittir. Öncelikle yapmanız gereken sitenizin dosyalarına ulaşmanız. Daha sonra wp-config.php dosyasını bulup içerisine girin. Daha sonra sizlere vereceğim kod parçacığını dosyanın en sonuna ekleyin ve dosyayı kaydedin. Böylelikle wordpress memory limit hatasını gidermiş olacaksınız.
define('WP_MEMORY_LIMIT', '512M');
ÖNEMLİ: Belirtmiş olduğum adımları yapmadan önce gerekli yedeklerinizi alıp daha sonrasında bu işlemleri yapmanızı tavsiye ederim. Ayrıca sunucunuz tarafınca da bu değerler düşük tutuluyor olabilmektedir. Bu sebeple tüm işlemlerden önce hosting firmanız ile gerekli irtibata geçerek, sunucunuzun limit kontrolünü yaptırmanızı tavsiye ederim.
Wordpress Uzmanı olarak sizlere bu konuda destek verebilirim, yapmanız gereken iletişim sayfasından ya da sosyal medya adreslerimden bana ulaşabilirsiniz.