web-dev-qa-db-ja.com

PHPでmime_content_type()が非推奨になるのはなぜですか?

mime_content_type() が非推奨と見なされる理由を知りたいだけです。

Mimeタイプを決定するこの方法は、置換 Fileinfo 機能よりもはるかに簡単です。

23
Josiah

Fileinfoが ファイルに関する詳細情報を返す ができるからだと思います。

編集:これが代替ハックです:

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

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

    return false;
}
24
Alix Axel

このメソッドは非推奨ではありません!

かつてはマニュアルで非推奨として誤ってマークされていましたが、2016年1月14日に修正されました https://bugs.php.net/bug.php?id=71367 。 ただし、現時点では、ドイツ語、スペイン語、中国語のマニュアルで非推奨と誤ってマークされています。

いつでもmime_content_type()を自由に使用してください:)。

42
Adam

もう1つの方法は、コンストラクター定数FILEINFO_MIMEに渡すことです。

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

finfo_file および finfo_open 、および FILEINFO_MIME_TYPE の使用:

finfo_file( finfo_open( FILEINFO_MIME_TYPE ), $filename );

これは、MediaWiki1.20の CSSMin.phpから派生したさまざまな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;
}

EDIT:この関数が実際に非推奨ではないであることを明確にしてくれた @ Adam および @ ficuscr に感謝します。

MediaWiki 1.30の時点で、上記のコードは基本的に次のように変更されました(元に戻されました)。

function getMimeType( $filename ) {
        return mime_content_type( $filename );
}
5
Timo Tijhof