php 调用未定义的函数exif_imagetype()

nzk0hqpo  于 2022-12-21  发布在  PHP
关注(0)|答案(4)|浏览(147)

我正在尝试为image-types获取Mime-Type,如下所示:

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(),我在这里做错了什么?

ylamdve6

ylamdve61#

php.ini中启用以下扩展并重新启动服务器。
扩展名= php_mb字符串. dll
扩展名= php_exif. dll
然后检查phpinfo()以查看它是否设置为on/off

3pmvbmvn

3pmvbmvn2#

我认为问题是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
zsbz8rwp

zsbz8rwp3#

将此函数添加到您的代码中,这样我们就可以知道您使用的是哪个版本的php,因为只有(PHP version 4〉= 4.3.0,PHP 5)才支持此函数。

<?php 
    phpinfo(); 
?>

它可能没有安装,您可以添加这部分代码以确保它:

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

zysjyyx44#

如果您使用Docker,请将以下内容添加到您的Docker文件中:

RUN docker-php-ext-install exif

相关问题