为什么PHP中不推荐使用mime_content_type()?

时间:2009-08-12 02:43:24

标签: php mime-types deprecated

我很想知道为什么mime_content_type()现在被视为已弃用。

这种确定mime类型的方法比替换Fileinfo功能容易得多。

5 个答案:

答案 0 :(得分:33)

该方法未被弃用!

它曾在手册中被错误标记为已弃用,但已于2016年1月14日修复https://bugs.php.net/bug.php?id=71367但是,目前,在德语,西班牙语和中文手册中,它仍被错误地标记为已弃用。

随时随地使用mime_content_type()。)。

答案 1 :(得分:21)

我想这是因为Fileinfo可以return more information about files

编辑:这是一个替代黑客:

function _mime_content_type($filename) {
    $result = new finfo();

    if (is_resource($result) === true) {
        return $result->file($filename, FILEINFO_MIME_TYPE);
    }

    return false;
}

答案 2 :(得分:6)

另一种方法是传递给构造函数常量FILEINFO_MIME

$finfo = new finfo(FILEINFO_MIME);
$type  = $finfo->file('path/filename');

答案 3 :(得分:3)

使用finfo_filefinfo_open以及FILEINFO_MIME_TYPE

finfo_file( finfo_open( FILEINFO_MIME_TYPE ), $filename );

这是一个小包装器,涵盖了从CSSMin.php in MediaWiki 1.20.0

派生的不同PHP环境

function getMimeType( $filename ) {
        $realpath = realpath( $filename );
        if ( $realpath
                && function_exists( 'finfo_file' )
                && function_exists( 'finfo_open' )
                && defined( 'FILEINFO_MIME_TYPE' )
        ) {
                // Use the Fileinfo PECL extension (PHP 5.3+)
                return finfo_file( finfo_open( FILEINFO_MIME_TYPE ), $realpath );
        }
        if ( function_exists( 'mime_content_type' ) ) {
                // Deprecated in PHP 5.3
                return mime_content_type( $realpath );
        }
        return false;
}

编辑:感谢@Adam@ficuscr澄清此功能实际上未弃用

截至MediaWiki 1.30,上述代码基本上已更改为(返回):

function getMimeType( $filename ) {
        return mime_content_type( $filename );
}

答案 4 :(得分:-2)

这有效:

if (!function_exists('mime_content_type')) {

    function mime_content_type($filename)
    {
        $finfo = finfo_open(FILEINFO_MIME_TYPE);
        $mimeType = finfo_file($finfo, $filename);
        finfo_close($finfo);

        return $mimeType;
    }
}