MIME-Typen mit PHP ermitteln

Für ein Webprojekt suchte ich eine PHP-Funktion, die den MIME-Typen einer Datei zuverlässig ermitteln und rückliefern kann. Die Dateiendung als Dateityp zu interpretieren, kam für mich als Linuxer natürlich nicht in Frage.

Auf der Suche nach einer “richtigen” Alternative, stieß ich in der PHP-Doku auf die Fileinfo-Functions.

Diese ermöglichen u.a. die Dateitypen-Zuordnung per libmagic.

Um die Funktionen benutzen zu können, benötigt man die PECL-Erweiterung Fileinfo.

Voraussetzung für die Installation der Extension sind php-pear, sowie die Development-Bibliotheken von PHP und LibMagic. Unter Debian Etch benötigt man also folgende Pakete:

# aptitude install php-pear php5-dev libmagic-dev

Fehlt php5-dev, erhält man bei dem Versuch, Fileinfo zu installieren, die lapidare Fehlermeldung:

sh: phpize: command not found
ERROR `phpize` failed

Sind die Voraussetzungen erfüllt, kann nun die Erweiterung selbst installiert werden:

# pecl install Fileinfo

Zuletzt macht man PHP mit der Erweiterung bekannt, indem man in der php.ini unter “Dynamic Extensions” die Zeile

extension=fileinfo.so

hinzufügt.

Nach einem Neustart des Webservers steht dann der File-Magie endlich nichts mehr im Wege, hier ein kurzes PHP-Beispiel:

function get_mimetype($_strFile) {
   /*
      gibt den Mime-Typ von $_strFile zurueck
   */

   if (!is_readable($_strFile))
      return false;

   $oFileInfo = new finfo(FILEINFO_MIME, "/usr/share/file/magic") || return false; 

   return $oFileInfo->file($_strFile);
} // function get_mimetype()

Über Stefan

Meine Leidenschaft, sowohl im beruflichen als auch im privaten Bereich, gilt seit mittlerweile über 15 Jahren Linux-Systemen. Einen speziellen Schwerpunkt in diesem Bereich habe ich nicht - nur Debian-basiert sollte es sein.
Dieser Artikel wurde in Aus dem Alltag veröffentlicht.Permalink als Favorit speichern.

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

*

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>