getimagesize () bazı görüntülerde yanlış döndürür

4 Cevap php

I getimagesize() yüklenen bir dosya geçerli bir resim olduğunu ve aynı zamanda MIME türünün olup olmadığını belirlemek için koşuyorum. Benim webapp bir kullanıcı bildirdi onları yükledikten sonra "geçersiz filetype" hatası alıyorum bazı görüntülerin. Yani kontrol etmek için beni bazıları göndermek için sordum. Here's one.

Bu fonksiyonlar (döner FALSE) başarısız olduğunda bana göre yazılı, sadece genel bir metin olduğu gibi hata dize kendisi anlamsızdır. Ben hiçbir başarı ile PHP'nin bellek sınırı artırıyordu çalıştı. Ayrıca, günlükleri olağandışı hiçbir şey görünmüyor. Dosyaları ile ilgili bir sorun var mı yoksa başka bir şey mi? Bu işlemi yapmak için daha iyi bir yolu var mı?

Benim gerçek kapsamı olacağını, ancak ben (getimagesize() (bir genişlik / yükseklik var anlamında) kabul eder, ben sadece getiri FALSE doens't olduğunu kontrol ediyorum ki herhangi bir dosyayı kabul ediyorum jpg | jpeg | png | gif | bmp | tif | tiff). Sunucunun çalışma PHP/5.2.6-1 + lenny3. Tekrar ediyorum, bu sadece bağlantılı görüntü ve aynı seriden bazı diğerleri ile olur, bu yüzden Lizard ima ne ile ilgili olduğunu düşünüyorum daha meyilli değilim.

UPDATE: $_FILES almadan önce boş olarak görünüyor getimagesize($_FILES['Filedata']['tmp_name']) bu yüzden dosya gerçekten kontrol asla, ben bu dosyaları gibi teslim edilmez neden anlamaya gerekir (belki de PHP için çok büyük? herhangi bir fikir?) kalanı. Ben şimdi gitmek zorunda ama daha sonra bu kontrol olacak, herhangi bir yardıma açığız. Teşekkürler!

4 Cevap

SO etrafa sonra ben bu insightful answer regarding PHP's upload limits buldum. . Ben zaten biliyordum ve nihayet (5MB yüklenenler sınırlayıcı) benim htaccess aşağıdaki kodu kullanarak çalışma var ne ile kombine:

php_value upload_max_filesize 5M
php_value post_max_size 8M
php_value max_input_time 1800
LimitRequestBody 0

Alt satır: Sorun PHP'nin getimagesize() işlevinde değildi, o görüntüler Apache ve PHP hem de boyut sınırlarını dosya nedeniyle sunucusuna yüklenen asla olmasıydı. Teşekkür yanıtladı ve yorumladı herkes, Bu sizin yardımınız olmadan bunu anlamaya çok daha acı olurdu!

Eğer daha fazla bilgi vermek kadar, ben gerçekten çok yardımcı olamaz. Aşağıdaki kodu:

$file = "http://img27.imageshack.us/img27/9159/dsc00799e.jpg";
$info = getimagesize($file);

echo "<pre>" . print_r($info,true) . "</pre>";

, Çıkışlar ($ dosya söz verilen görüntüsünün konumuna eşit olduğu durumlarda):

Array
(
    [0] => 2736
    [1] => 3648
    [2] => 2
    [3] => width="2736" height="3648"
    [bits] => 8
    [channels] => 3
    [mime] => image/jpeg
)

Bu iyi görünüyor. Ben çek başka bir yerde bir hata varsayarak yaşıyorum?

Bu senin aradığın cevabı ise emin değilim ama ben php fonksiyonları ve herhangi bir boyutta 3000px üzerinde olma görüntüler ile sorunları olduğunu biliyorum.

Umarım ki olur!

Dedin

$ _FILES Boş görünüyor

Bir yükleme hata kontrol ettin mi? - Yükleme PHP dosyanın dizinin error öðesinin başarısız olduğunda. Farklı hata kodları için PHP belgelerine ait File Upload section mümkün görmek.