PHP Ölümcül hata nasıl çözülür: 8388608 bayt bitmiş bellek boyutu tükendi


ini_set ( “memory_limit”,”16M“);

Bu, hafıza limitinizi 16 MB'a ayarlayacak.8 MB’dan daha fazla. Bu numara ile keman yapabilirsiniz ve böylece bu hata mesajını tekrarlamadan mümkün olduğu kadar düşük olacaktır. Bu sadece söz konusu PHP dosyası için hafıza limitini değiştirir.
Alternatif olarak, php.ini dosyanızı bellek sınırını yükseltecek şekilde değiştirebilirsiniz. Bu, sunucunuzdaki tüm komut dosyalarını etkileyecektir. Sadece php.ini dosyasını açın ve “memory_limit” yazan satırı bulun ve değiştirin:
memory_limit = 16 M

Kendi PHP'mde farkettim.Ini dosya varsayılan benim 128M'de çok daha yüksek. Bu yüzden eğer bu hata mesajını alırsam şu mesajı okurdu: “Ölümcül hata: İzin verilen 134217728 bayt bellek boyutu tükendi…” ve açıkça daha büyük bir sorun. Ancak “Önemli hata: İzin verilen 8388608 bayt bellek boyutu tükendi…” veya “Önemli hata: 16777216 bayt bitmiş bellek boyutu tükendi…” ile aynı şekilde çalışıyor. Görünüşe göre, memory_limit varsayılanı PHP 5.2.0'da 8M'den 16M'ye yükseltildi ve şimdi PHP 5.3.0 için 128M'dir, bu neden bu hata mesajını neden alamayacağınızı açıklar.
PHP.ini'de memory_limit'i –1 olarak ayarlayarak da hafıza sınırını devre dışı bırakabilirsiniz.
memory_limit = -1
Bu, bariz nedenlerden ötürü, genellikle iyi bir fikir değildir.
Not: .htaccess sayfanızdaki memory_limit hattını da kullanabilirsiniz.
Şimdi, unutma, bu sadece bir geçici çözüm. Gerçekten, PHP betiğiniz değil dosyalarınızı yüklemediğiniz sürece 8 MB’ı geçmeyi unutmayın veyaAçıkça çok fazla bellek kullanımı gerektiren bir şey yapmak. Yapmanız gereken şey, komut dosyanızın neden bu kadar çok bellek kullandığını anlamaya çalışmak ve düzeltmeyi denemek. PHP betiğinizin ne kadar bellek kullandığını bulmanın bir yolu, memory_get_usage () PHP işlevini kullanmaktır. Bellek kullanımınızın nerede çektiğini öğrenmek için betiğinizin herhangi bir noktasında yankılanmanız yeterlidir:
echo memory_get_usage ();
Bu hata iletisini Drupal veya Joomla'da alıyorsanız, muhtemel suçlu yeni bir modül veya pakettir. Örneğin, Drupal’da yönetici / modül sayfası yüklenir. her Drupal kurulumunuzdaki modülÖzel bir modül buggy, bozuk veya saldırıya uğramışsa kıllı. Hangi tarafın yıkılacağını belirlemek için modülleri tek tek devre dışı bırakmayı deneyin. Ayrıca, bazı barındırma sağlayıcıları PHP kodunuzun bellek sınırlarını değiştirme girişimlerinizi dikkate almaz, bu nedenle size yardımcı olması için barındırma desteğinizle iletişim kurmanız gerekebilir. Bazen php.ini dosyasını düzenlemeniz ve bazen kodu .htaccess dosyasına koymam gerektiğini öğrendim. Her iki durumda da, umarım, bu bilgi sizi yolda almak için yeterli!
yorum Yap