2013-04-23 56 views
13

我试图让Mime-Typeimage-types如下:调用未定义功能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 

    } 

} 

但它总是给人错误Call to undefined function exif_imagetype()。我在这里做错了什么?

+0

@phpNoOb我试着作为答案那里,但仍然是相同的错误。 – 2013-04-23 17:42:57

回答

37

php.ini中启用以下扩展并重新启动服务器。

扩展=中php_mbstring.dll
延长= php_exif.dll

然后检查phpinfo(),看它是否被设置为开/关

+0

不要忘了在此操作后重新启动你的apache服务器 – 2013-04-25 10:22:23

+0

--enable-exif#对于Linux – Zjmainstay 2014-04-02 05:20:50

+0

对于那些将是'extension = exif.so'的linux。我无法在php文档中找到--enable-exif选项。 – BakaKuna 2015-10-10 15:51:50

3

添加到您的代码,以便我们可以知道你使用哪个版本的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"; 
} 
?> 
+0

我在'PHP版本5.2.9'上。 – 2013-04-23 18:20:32

+0

@Kishor Subedi,检查我的编辑,btw是你在Windows或Linux下? – 2013-04-25 09:59:35

+0

我是窗口用户。 – 2013-04-26 05:30:20

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