web-dev-qa-db-ja.com

未定義の関数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()が発生します。ここで何が悪いのですか?

14
Subedi Kishor

_php.ini_で次の拡張機能を有効にして、サーバーを再起動します。

extension = php_mbstring.dll
extension = php_exif.dll

次にphpinfo()をチェックして、オン/オフに設定されているかどうかを確認します

39
samayo

問題は、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なども入力として使用できることがわかりました。整数値をMIMEタイプとして返​​すgetimagesizeを使用して問題を解決しました。

_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
_
6
aesede

この関数は(PHPバージョン4> = 4.3.0、PHP 5)でのみサポートされているため、使用しているphpのバージョンがわかるように、これをコードに追加します。

<?php 
    phpinfo(); 
?> 

インストールされていない可能性があります。コードのこの部分を追加して、次のことを確認できます。

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