PHP错误 调用未定义的函数exif_imagetype()

在PHP中使用 exif_imagetype函数来判断一个文件是否是一某种类型的图片时,直接会报一个 Fatal error 的错误,让我们感觉莫名其妙,明明在php的官方文档中有这个函数的存在,为什么不能拿过来用呢?

W3CAPI
1
2020-04-23 07:50:58
文档目录
我的书签
 

Fatal error: Uncaught Error: Call to undefined function exif_imagetype()

一、错误由来

在php中直接使用exif_imagetype函数来获取客户端发送过来的,图片文件的类型,代码如下:
if( !empty($_FILES['upload_file']['filename']) && $_FILES['upload_file']['error'] == 0 ){
    $file = $_FILES['upload_file']['tmp_name']; //获取客户端上传的文件
    $file_type = image_type_to_mime_type(exif_imagetype($file));
}

二、错误分析

如上代码直接运行会一直报 Fatal error: Uncaught Error: Call to undefined function exif_imagetype() 错误,字面意思是函数 exif_imagetype没有定义,仔细阅读官方文档可以了解到,这个函数属于php扩展模块Exif中的一个函数,要想使用需要注意的是:
  • 必须使用 --enable-exif 选项编译 PHP
  • 如果要提供对 EXIF 标签中元数据的多字节文字支持,需要通过使用 --enable-mbstring 选项编译 PHP 来启用 mbstring 扩展
  •  exif 不需要其他额外的 PHP 库就可以直接使用
  • Windows 平台:必须启用 mbstring 扩展。 并且,在 php.ini 文件中, mbstring 必须先于 EXIF 加载

三、错误解决

根据错误分析我们可以很轻松的进行问题的解决了,在php.ini中添加需要的扩展即可:

extension=php_mbstring.dll
extension=php_exif.dll

然后运行 phpinfo(),在php的环境信息中查看exifmbstring是否已经打开
友情提示