Merhaba sevgili okurlar! Eğer PHP ile çalışan bir web projeniz varsa ve sunucunuzda PHP-FPM (FastCGI Process Manager) kullanıyorsanız, muhtemelen "memory limit" hatasıyla karşılaşmışsınızdır. Bu, özellikle büyük uygulamalarda veya yüksek trafikli sitelerde sıkça karşılaşılan bir sorundur. Peki, bu hata nedir ve nasıl çözülür? Gelin, birlikte adım adım çözüme ulaşalım.
PHP-FPM Memory Limit Hatası Nedir?
PHP-FPM, PHP'yi daha hızlı çalıştırmak için kullanılan bir işlem yöneticisidir. Ancak zaman zaman, PHP script'leri büyük işlemler yaptığında, sunucuya yeterli bellek ayıran bir limitin aşılması sonucu "memory limit exceeded" hatası alabilirsiniz. Bu hata genellikle büyük veri işleme veya yoğun işlemler sırasında meydana gelir. Web sitenizdeki sayfalar, kullanıcıların beklentilerini karşılamak için yoğun hesaplamalar yapıyorsa, sunucu bu talepleri karşılayacak yeterli belleğe sahip olmayabilir.
Bu hatanın sıkça yaşanmasının en büyük nedeni, PHP için belirlenen bellek limitinin küçük olmasıdır. Ama merak etmeyin! Bu yazıda, bu sorunu nasıl çözebileceğinizi adım adım göstereceğiz.
Hata Mesajı Ne Anlama Geliyor?
PHP-FPM "memory limit" hatasını gördüğünüzde, genellikle şu tarzda bir hata mesajı ile karşılaşırsınız:
```
Allowed memory size of 134217728 bytes exhausted (tried to allocate 8192 bytes)
```
Bu mesaj, PHP’nin çalıştırmaya çalıştığı işlem için belirlenen bellek limitini aştığını ve daha fazla bellek ayırma isteği olduğu halde, bu isteğin yerine getirilmediğini gösterir.
PHP-FPM Memory Limitini Artırma
Şimdi, PHP-FPM memory limit sorununu nasıl çözebileceğimize bakalım. Bu işlem birkaç adımdan oluşuyor.
# 1. `php.ini` Dosyasını Düzenleyin
İlk adım olarak, PHP konfigürasyon dosyasını (`php.ini`) düzenlemeniz gerekiyor. Bu dosya, PHP'nin tüm global ayarlarını içerir ve bellek limitini de buradan değiştirebilirsiniz.
Dosyanın konumu genellikle şu yolda bulunur:
```
/etc/php/7.x/fpm/php.ini
```
Yine de versiyon numarasına göre bu yol değişebilir. Bu dosyayı bir metin editörüyle açın. Örneğin, `nano` kullanabilirsiniz:
```
sudo nano /etc/php/7.x/fpm/php.ini
```
Ardından, `memory_limit` satırını bulun ve istediğiniz değeri ayarlayın. Örneğin, bellek limitini 512MB olarak değiştirmek için şu şekilde düzenleyebilirsiniz:
```
memory_limit = 512M
```
Bu değeri ihtiyacınıza göre artırabilirsiniz. Genellikle, çok büyük projelerde bu değeri 1GB veya daha fazla yapmak gerekebilir. Bu değişikliği kaydedin ve dosyayı kapatın.
# 2. PHP-FPM Servisini Yeniden Başlatın
`php.ini` dosyasını güncelledikten sonra, PHP-FPM servisini yeniden başlatmanız gerekiyor. Bunun için aşağıdaki komutu kullanabilirsiniz:
```
sudo systemctl restart php7.x-fpm
```
Bu komut, PHP-FPM servisini yeniden başlatarak yaptığınız değişikliklerin geçerli olmasını sağlar.
# 3. Web Sunucu Konfigürasyonunu Kontrol Edin
PHP-FPM'in ayarları, web sunucusu (Apache veya Nginx) tarafından da etkilenebilir. Eğer Apache kullanıyorsanız, `httpd.conf` veya `apache2.conf` dosyalarını kontrol etmeniz gerekebilir. Nginx için ise ilgili konfigürasyon dosyasını incelemeniz önemlidir.
# 4. `php-fpm.conf` Dosyasındaki Ayarları Kontrol Edin
PHP-FPM'in konfigürasyon dosyasındaki ayarları da kontrol etmeniz gerekebilir. Bu dosya genellikle şu yolda bulunur:
```
/etc/php/7.x/fpm/pool.d/www.conf
```
Bu dosyada yer alan `php_admin_value[memory_limit]` satırını kontrol edin. Eğer burada bir limit belirlenmişse, onu da değiştirmek gerekebilir.
Örnek olarak:
```
php_admin_value[memory_limit] = 512M
```
# 5. Web Uygulamanızın Kodunu İnceleyin
Eğer PHP-FPM memory limit hatası alıyorsanız, bu bazen yazılımın kendisinden de kaynaklanabilir. Özellikle, bellek kullanımını optimize etmeyen veya gereksiz bellek tüketen kodlar, bu hataya yol açabilir. Bu durumda, kodunuzu gözden geçirerek, bellek kullanımını optimize edebilir ve gereksiz işlemleri kaldırabilirsiniz.
Sonuç
PHP-FPM memory limit hatası, web geliştiricilerinin karşılaştığı yaygın bir sorundur, ancak doğru yapılandırmalar ve optimizasyonlarla kolayca çözülebilir. Yukarıdaki adımları takip ederek, PHP-FPM bellek limitinizi artırabilir ve sitenizin performansını iyileştirebilirsiniz.
Unutmayın, PHP-FPM ve bellek yönetimi konusu biraz teknik olabilir, ancak doğru adımları takip ederek bu tür sorunları hızlıca çözebilirsiniz. Hem sunucunuzun hem de web uygulamanızın daha verimli çalışmasını sağlamak için bu önerileri hayata geçirin.