2013-04-23 41 views
13

Ich versuche Mime-Type für image-types wie folgt zu erhalten:Call to undefined function exif_imagetype()

if(!empty($_FILES['uploadfile']['name']) && $_FILES['uploadfile']['error'] == 0){  

    $file = $_FILES['uploadfile']['tmp_name']; 
    $file_type = image_type_to_mime_type(exif_imagetype($file)); 

    switch($file_type){ 

     // Codes Here 

    } 

} 

Aber es gibt immer den Fehler Call to undefined function exif_imagetype(). Was mache ich hier falsch?

+0

@phpNoOb Ich versuchte als Antwort dort aber immer noch den gleichen Fehler. –

Antwort

37

Aktivieren Sie die folgenden Erweiterungen in php.ini und starten Sie Ihren Server neu.

extension = php_mbstring.dll
extension = php_exif.dll

Dann phpinfo() überprüfen, um zu sehen, ob es gesetzt ist on/off

+0

Vergessen Sie nicht, Ihren Apache-Server nach dieser Manipulation neu zu starten. –

+0

--enable-exif #Für Linux – Zjmainstay

+0

Für Linux wäre das 'extension = exif.so'. Ich konnte keine --enable-exif-Option in der PHP-Dokumentation finden. – BakaKuna

3

Fügen Sie diese auf Ihren Code so, wie wir konnten wissen Sie, welche Version von PHP Sie haben, da diese Funktion nur von (PHP Version 4> = 4.3.0, PHP 5) unterstützt wird.

<?php 
    phpinfo(); 
?> 

Es kann nicht installiert werden, können Sie diesen Teil des Codes hinzufügen, um sicherzustellen, dass es ist:

<?php 
if (function_exists('exif_imagetype')) { 
    echo "This function is installed"; 
} else { 
    echo "It is not"; 
} 
?> 
+0

Ich bin auf 'PHP Version 5.2.9'. –

+0

@Kishor Subedi, Überprüfen Sie meine Bearbeitung, sind Sie unter Windows oder Linux? –

+0

Ich bin Fensterbenutzer. –

3

denke ich, das Problem PHP config und/oder Version, zum Beispiel in meinem Fall:

Wir wissen exif_imagetype() nimmt einen Dateipfad oder eine Ressource und gibt eine konstante wie IMAGETYPE_GIF und image_type_to_mime_type() nimmt, dass konstanten Wert und gibt einen String zurück 'image/gif', 'image/jpeg' usw. Das hat nicht funktioniert (fehlende Funktion exif_imagetype), also habe ich festgestellt, dass image_type_to_mime_type() auch eine ganze Zahl 1, 2, 3, 17 usw. als Eingabe annehmen kann, also löste das Problem mit getimagesize, das einen ganzzahligen Wert zurückgibt als Mimetyp:

function get_image_type ($filename) { 
    $img = getimagesize($filename); 
    if (!empty($img[2])) 
     return image_type_to_mime_type($img[2]); 
return false; 
} 

echo get_image_type('my_ugly_file.bmp'); 
// returns image/x-ms-bmp 
echo get_image_type('path/pics/boobs.jpg'); 
// returns image/jpeg 
Verwandte Themen