Nasıl ayrılan bellek izin amout değiştirmek için?

6 Cevap php

Ölümcül hata: tükenmiş 33554432 bayt İzin bellek boyutu / mounted-storage/home20a/sub001/sc20063-GJYD / in [...] hattında 62 (40000 bayt ayırmaya çalıştı)

PHP-script sadece bellek 32 MB tahsis beni allowes gibi görünüyor? Bu example image, bir kullanıcı bir büyük resim upload çalışırsa ne olacağını test etmek için bir oldu.

Benim soru: Nasıl bu olur, ve sonra görüntü yerine bu hatayı dönen çok büyük olduğunu kullanıcıyı uyarmak olacağını tahmin edebilirsiniz? Onun bir süre test ettim, ama ben denemek-yakalamak ve @ hem çalıştı düşünüyorum, ama bu bir hatadır beri ikisi başarısız oldu çünkü. Örnek görüntünün boyutu sadece 1 kB, bu nedenle bu değeri kontrol çalışmaz.


Ben $ genişliği ve görüntünün $ yüksekliğini kontrol edin ve ardından görüntü çok büyük ise kullanıcıya bildirebilirsiniz, benim kendi sorunu çözüldü düşünüyorum, ama ben başka bir soru var: Nasıl ayrılan bellek izin amout değiştirebilirim? Ben benim kullanıcıların çok yüksek resolutioned görüntüleri göndermek için çalışacağız varsayalım. I ini_set("memory_limit", $bignumber) denedim ama çalışmıyor.

6 Cevap

Değiştirmek için memory_limit, memory_limit yönergesi php.ini dosyasında - bu değişiklik bütün sunucusu için geçerli olmak istemiyorsanız, senin de Apache VirtualHost yapılabilir, fakat sadece bir web sitesi için.

Ama her zaman bunu olmayabilir - Eğer sunucu yönetici olmak gerekir ...

BTW, How to change configuration settings de bir göz atabilirsiniz.


Another possibility might be to use imagemagick, and its convert executable, using one of the Program execution Functions. This way, the resizing of your image wouldn't be done by PHP.

Ama, burada, bu harici programa bağlıdır anlamına gelir ...

Siz de ini_set aracılığıyla izin verilen bellek boyutu düzenleme olabilir, ama güvenli modu veya suhoshin yama olabilir block it. Memory_limit yönergesi de php.ini içinde ihtiyaç duyulan bellek boyutunu ayarlayın.

Eğer hafıza limitini artırmak istiyorsanız, bu tercüman (- ini_set kullanarak değil yani php.ini dosyasında değiştirmeniz gerekir) çalıştırılmadan önce yapılması gerekiyor.

"Ben, ben $ genişliği ve görüntünün $ yüksekliği kontrol edebilirsiniz, benim kendi sorunu çözüldü düşünüyorum"

gd getimagesize GD'deki bitmap bellek kullanımına haritası verecek değerlerini geri getirecek, ancak belki de dosya PHP alır önce yükleme boyutunu ve max sonrası boyutunu sınırlayarak düşünmek gerekir

C.

Sen php.ini yapılandırma dosyasında yapmanız gerekir: memory_limit.

Ile deneyin

ini_set("memory_limit","50M");

Belki sizin $bignumber (dolayısıyla M) megabayt belirtilmedi.

Php.ini ayarını düzenleyin ya da içinde aşağıdaki satırı ile (Windows hosting ile ilgili değilse) bir htaccess kullanabilirsiniz.:

php_value memory_limit 32M

Sitenizin belli bir alanda bu ayarı değiştirmek istiyorsanız php.ini erişimi yoksa veya eğer. Htaccess çözümü size fiyakalý olabilir. Benim örnekte sınırı 32MB yükseltilir. Bazı ev sahibi bu destek olmaz ya da (özellikle paylaşılan barındırma ortamlarında) ekstra büyük değerleri destekleyecek unutmayın.