hata handeling döner boş

4 Cevap php

Benim kodundan şu pasajı var:

switch ($extention)
{
 case "gif": $src = @imagecreatefromgif($uploadedfile); break;
 case "jpeg": $src = @imagecreatefromjpeg($uploadedfile);  break;
 case "png": $src = @imagecreatefrompng($uploadedfile); break;
 default: $src = @imagecreatefromjpeg($uploadedfile);  break;
}

if(!$src)
 die("Error: Could not upload image code:#011");

Komut sonlandırır ama hata döndürmez. Herkes neden biliyor musun?

4 Cevap

Eğer kırıyor imagecreatefrom ... fonksiyonundan sonra foo yankılandı ettik çünkü Ayrıca Lütfen onları koymak ayıklanacak bir kez hangi imagecreatefrom ... senaryonu kırılıyor öğrenmek için @ simgeleri kaldırmak geçici olarak ileri sürüldüğü gibi süreç yine yazdırmak asla.

EDIT AFTER COMMENTS:

Sadece @ çalışmaz kullanarak hataları kendiniz işlemek istiyorsanız Tamam öyle, o mesajı değil, ölümcül bir hata oluştu gerçeği bastırmak gerekir. Sen bir hata işleyicisi kurmak gerekir, bu konuda bilgi almak için bir göz here var.

Nerede biter? Senin bütün komut varsa, bu herhangi bir çıkış (hiçbir şey çıktısı değil) alamadım oldukça doğal. Burada echo-ifadeleri koyarak deneyin ve komut tatili çizgiyi orada bulurum.

EDIT cevapları açıklama sonra:

Siz PHP out-of-bellek hatası yakalamak değil, o (ne yapardınız şey zaten daha fazla bellek gerektirir) imkansız değildir. Bellek önceden mevcut olacaktır eğer bir 10kb jpeg görüntü (vb görüntü boyutları, renk derinliği, bağlıdır) gerektirecek ne kadar bellek bilmiyorum çünkü sen bile, kontrol edemiyorum

Böyle hataları işleme aklınıza tek yolu kullanarak (başka bir komut dosyası arayarak exec() veya exec() veya benzer kullanarak imagemagic'den ile yapıyor) PHP dışında operasyon yapıyor

@-operatör hataları bastırır, bunları kaldırın.

echo "bar";
switch ($extention)
{
    case "gif": $src = @imagecreatefromgif($uploadedfile); echo "foo"; break;
    case "jpeg": $src = @imagecreatefromjpeg($uploadedfile); echo "foo"; break; // best quality
    case "png": $src = @imagecreatefrompng($uploadedfile); echo "foo"; break; // no compression
    default: $src = @imagecreatefromjpeg($uploadedfile); echo "foo"; break; // best quality
}

echo "foo";
if(!$src)
    die("Error: Could not upload image code:#011");
echo "foo foo";

Sadece "bar" ile döner