PHP "Fatal error: Allowed memory size exhausted" Hatası Nedir ve Nasıl Çözülür?

PHP "Fatal error: Allowed memory size exhausted" Hatası Nedir ve Nasıl Çözülür?

PHP "Fatal error: Allowed memory size exhausted" hatası hakkında detaylı bir rehber. PHP bellek limitini artırma ve kod optimizasyonu ile hatayı nasıl çözebileceğinizi öğrenin.

Al_Yapay_Zeka

PHP dünyasında gezinirken, hiç beklemediğiniz bir anda karşılaştığınız o korkutucu hatayı unutmuyorum. Bir anda sayfanızda şok edici bir şekilde beliren "Fatal error: Allowed memory size exhausted" hatası, hemen dikkat etmeniz gereken bir durumu işaret eder. Bu hatanın sebebi, PHP'nin çalışma bellek sınırını aşmanızdır. Fakat bu hata ile karşılaştığınızda endişelenmeyin, çünkü size adım adım nasıl çözebileceğinizi göstereceğim.

Hatanın Sebebi: Bellek Sınırını Aşmak


Bir web sitesi geliştiricisi olarak, bazen PHP kodları büyük veri işlemleri gerçekleştirmek için çalışır. Bu, yüksek çözünürlüklü görselleri yüklemek, büyük dosyaları işlemek ya da karmaşık veritabanı sorguları yapmak gibi durumlar olabilir. Fakat her PHP betiği, belirli bir bellek limitine sahiptir. Bu limit, PHP'nin belleği kullanırken aşması yasaklanmış bir sınırdır. Eğer bu sınır aşılırsa, "Fatal error: Allowed memory size exhausted" hatası devreye girer.

Peki, ne yapmalısınız?

1. PHP Bellek Limitini Artırın


Bu hatayı çözmenin ilk ve en kolay yolu, PHP bellek limitini artırmaktır. Bellek limiti arttırmak, çoğu zaman sorununuzu çözecektir. Bunu yapmak için PHP konfigürasyon dosyanızda bazı değişiklikler yapmanız gerekebilir.

İlk adım olarak, PHP'nin `php.ini` dosyasını bulmalısınız. Bu dosya, PHP'nin çalıştığı ortamı yöneten önemli bir yapılandırma dosyasıdır. Dosyanın içine girin ve şu satırı bulun:

memory_limit = 128M


Bu satır, PHP'ye ayırdığı bellek miktarını belirler. Burada 128M, PHP'nin 128 MB bellek kullanmasına izin verdiğini gösterir. Eğer 128MB yetersizse, örneğin 256MB veya daha fazlasını ayarlayabilirsiniz:

memory_limit = 256M


Yaptığınız değişikliklerin etkili olabilmesi için PHP servislerini yeniden başlatmayı unutmayın.

2. .htaccess Dosyasını Kullanarak Bellek Limitini Artırın


Eğer `php.ini` dosyasını bulmakta zorlanıyorsanız, ya da hosting sağlayıcınız bu dosyayı düzenlemenize izin vermiyorsa, .htaccess dosyasını kullanarak da bellek limitini artırabilirsiniz.

Web sitenizin kök dizininde bulunan `.htaccess` dosyasına şu satırı ekleyebilirsiniz:

php_value memory_limit 256M


Bu yöntem genellikle paylaşımlı hostinglerde kullanılır ve işlemin hemen gerçekleşmesini sağlar.

3. PHP Kodunuzu Optimize Edin


Bazen bu hata, yalnızca bellek limitinin düşük olmasından kaynaklanmaz. Kodunuzun verimsiz çalışması da bu hataya yol açabilir. Örneğin, gereksiz veritabanı sorguları yapmak, büyük resimleri belleğe yüklemek veya döngüler içinde büyük veri kümelerini işlemek, bellek kullanımınızı hızla artırabilir.

PHP kodunuzu gözden geçirip optimize etmek, bellek kullanımını önemli ölçüde azaltabilir. İşte birkaç öneri:

- Veritabanı sorgularını optimize edin: Gereksiz veya tekrarlayan sorguları ortadan kaldırın. Ayrıca, veri çekme işlemlerini daha küçük parçalara bölmeyi düşünün.
- Büyük dosyaları bölün: Eğer büyük dosyalarla çalışıyorsanız, bunları daha küçük parçalara ayırarak işlemeyi deneyin.
- Belleği boşaltın: Kullanılmayan değişkenleri bellekten temizlemek için `unset()` fonksiyonunu kullanabilirsiniz.

4. Hosting Sağlayıcınıza Başvurun


Yukarıdaki adımları denediyseniz ve hala aynı hatayı alıyorsanız, hosting sağlayıcınız ile iletişime geçmeyi düşünebilirsiniz. Özellikle paylaşımlı hosting kullanıyorsanız, bellek limitinizi arttırma konusunda bazı kısıtlamalar olabilir. Hosting sağlayıcınız, PHP bellek limitini artırmak için size yardımcı olabilir.

Sonuç


PHP "Fatal error: Allowed memory size exhausted" hatası, oldukça yaygın bir hatadır ancak çözülmesi de son derece basittir. PHP bellek limitini artırarak veya kodunuzu optimize ederek bu hatadan kolayca kurtulabilirsiniz. Bu hatayla karşılaştığınızda panik yapmanıza gerek yok. Yukarıdaki yöntemlerden bir veya birkaçını deneyerek, web sitenizin daha verimli çalışmasını sağlayabilirsiniz.

İlgili Yazılar

Benzer konularda diğer yazılarımız

Node.js ile Asenkron Programlamaya Giriş: Callbacks, Promises ve Async/Await Arasındaki Farklar

### Node.js ile Asenkron Programlama Nedir?Bir yazılımcı olarak, uygulama geliştirdiğinizde karşılaştığınız en temel sorunlardan biri genellikle asenkron işlemlerdir. Bu, özellikle Node.js kullanıyorsanız kaçınılmazdır. Node.js’in olay döngüsü (event...

Drupal Nasıl Kurulur ve Yönetilir?

Merhaba! Eğer bir web sitesi kurmayı düşünüyor ve içerik yönetim sistemi (CMS) olarak Drupal'ı seçtiyseniz, doğru yerdesiniz. Drupal, esnek yapısı, güçlü güvenlik özellikleri ve geniş eklenti desteğiyle, birçok profesyonel web geliştiricisinin tercihi....

Kapsayıcı Yazılım Tasarımı: Erişilebilirliği Artırmanın 10 Yolu

Yazılım dünyasında herkesin ulaşabileceği uygulamalar tasarlamak, sadece doğru teknolojiye sahip olmakla değil, aynı zamanda kullanıcıların çeşitli yeteneklerine ve ihtiyaçlarına saygı duymakla ilgilidir. Hepimiz, dijital dünyanın büyüsünden yararlanıyoruz,...

Yavaş Web Siteleri İçin Hız Optimizasyonu: SEO Performansınızı Artırmak İçin 10 Gizli Yöntem

Web sitenizin yavaş olması, sadece kullanıcı deneyimini olumsuz etkilemekle kalmaz, aynı zamanda SEO performansınıza da ciddi zarar verebilir. Her saniye önemlidir! Araştırmalara göre, sayfa yükleme süresi 2 saniyeyi aşarsa, kullanıcıların siteyi terk...

React ile Server-Side Rendering (SSR): Performans Artışı mı, Karmaşa mı?

Web geliştirme dünyasında, performans ve kullanıcı deneyimi her zaman ön planda olmuştur. Bu noktada, Server-Side Rendering (SSR), genellikle “daha hızlı yükleme süreleri” ve “daha iyi SEO” gibi vaatlerle devreye giriyor. Ancak, SSR’nin sunduğu avantajlar...

Kodlama Dünyasında Geleceği Şekillendirecek 5 Yenilikçi Web Teknolojisi

Geleceğe Giden Yolda Web Teknolojilerinin GücüWeb teknolojileri sürekli bir evrim içinde. Bugün kullandığımız araçlar ve platformlar, birkaç yıl öncesine kadar hayal bile edilemezken, gelecekte karşımıza çıkacak yenilikler de şimdiden geliştirilmeye başlanmış...