Warum ist mime_content_type () in PHP als veraltet?
-
13-09-2019 - |
Frage
Ich bin nur neugierig zu wissen, warum mime_content_type () jetzt als veraltet gilt.
Diese Methode den Mime-Typ für die Bestimmung ist viel einfacher als der Ersatz Fileinfo Funktionalität.
Lösung
Ich denke, es liegt daran, Fileinfo können zurückkehren weitere Informationen über Dateien .
EDIT: Hier ist ein Ersatz-Hack:
function _mime_content_type($filename) {
$result = new finfo();
if (is_resource($result) === true) {
return $result->file($filename, FILEINFO_MIME_TYPE);
}
return false;
}
Andere Tipps
Das Verfahren ist nicht veraltet!
Es einmal falsch markiert wurde, wie im Handbuch veraltet, aber es wird behoben https: //bugs.php.net/bug.php?id=71367 am 14. Januar 2016.
Doch im Moment ist es immer noch nicht richtig in dem deutschen, spanischen und chinesischen Handbuch als veraltet markiert.
Sie können ferner mime_content_type()
verwenden, wann immer Sie möchten.)
Ein anderer Weg ist an den Konstruktor konstant FILEINFO_MIME
zu übergeben.
$finfo = new finfo(FILEINFO_MIME);
$type = $finfo->file('path/filename');
Mit finfo_file
und finfo_open
und FILEINFO_MIME_TYPE
:
finfo_file( finfo_open( FILEINFO_MIME_TYPE ), $filename );
Hier ist ein kleines Wrapper verschiedene PHP-Umgebungen abzudecken, abgeleitet von CSSMin.php in MediaWiki 1.20 :
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: Dank @ Adam und @ ficuscr für die Klärung, dass diese Funktion war in der Tat, nicht veraltet .
Wie von MediaWiki 1.30 wurde der obige Code wesentlich verändert (zurück) zu:
function getMimeType( $filename ) {
return mime_content_type( $filename );
}
Das funktioniert:
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;
}
}