Вызов функции undefined exif_imagetype()

Я пытаюсь получить Mime-Type для image-types следующим образом:

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

    }

}

Но он всегда дает ошибку Call to undefined function exif_imagetype(). Что я здесь делаю неправильно?

Ответ 1

Включите следующие расширения в php.ini и перезапустите сервер.

расширение = php_mbstring.dll
   расширение = php_exif.dll

Затем проверьте phpinfo(), чтобы установить, включено ли оно/выключено

Ответ 2

Добавьте это в свой код, чтобы узнать, какая версия php у вас есть, потому что эта функция поддерживается только (PHP версия 4 >= 4.3.0, PHP 5).

<?php 
    phpinfo(); 
?> 

Возможно, он не установлен, вы можете добавить эту часть кода, чтобы убедиться в этом:

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

Ответ 3

Я думаю, что проблема заключается в конфигурации PHP и/или версии, например, в моем случае:

Мы знаем exif_imagetype() берет путь к файлу или ресурс и возвращает константу, такую ​​как IMAGETYPE_GIF и image_type_to_mime_type() принимает это постоянное значение и возвращает строку 'image/gif', 'image/jpeg' и т.д. Это не сработало (отсутствует функция exif_imagetype), поэтому я обнаружил, что image_type_to_mime_type() также может принимать целое число 1, 2, 3, 17 и т.д. поэтому решена проблема с использованием getimagesize, которая возвращает целочисленное значение как тип mime:

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