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

En yaygın ve sinir bozucu hatalardan biriPHP kodlayıcıları tarafından karşılaşılanlar: “Ölümcül hata: İzin verilen 8388608 baytlık bellek boyutu tükeniyor…” ardından 12. satırdaki “(XXXX byte'ları ayırmaya çalıştı)” / / 12. satırındaki ". PHP, varsayılan olarak, herhangi bir komut dosyası için 8 MB bellek kullanım sınırına sahiptir. Aslında bu iyi bir şey çünkü dolandırıcı bir PHP betiğinin tüm belleği takarak sunucunuzu indirmesini istemiyorsunuz. Ancak bazen normalde 8 MB sınırını aşan bir PHP betiğiniz olur (Örneğin, içe aktarmak veya yüklemek için). “Önemli hata: İzin verilen 8388608 bayt bitmiş bellek boyutu…” hata iletisini geçici olarak gidermek için, bu kod satırını en üstündeki komut dosyasına eklemeniz yeterlidir:

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

memory_limit

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

Önemli hata: İzin verilen 134217728 bellek boyutu tükendi

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!

0

Benzer makaleler

yorum Yap