Erweiterung php_mime_magic.dll aktivieren

Hallo!

Könnt ihr bitte in eurer php.ini die Erweiterung php_mime_magic.dll aktiveren?
Ich muss nämlich für ein Download-Skript den Mime-Typ einer Datei bestimmen und finde dazu nur die PHP-Funktion mime_content_type().
Ich wäre auch mit einer alternativen Funktion zufrieden, aber alles, was ich gefunden habe, läuft entweder auf eine Änderung der php.ini, das server-seitige Installieren zusätzlicher PHP-Module oder eine eigene Mime-Typ-Tabelle hinaus.

Nils

Detect MIME Content-type for a file (deprecated)

Hast du schon mal fileinfo probiert ?

Moin,

den MIME-Type kann man - so bekloppt es sich anhören mag - auch schlichtweg über getimagesize() ermitteln. Der Code dafür würde so aussehen:

$var = getimagesize($datei); // getimagesize auf die Datei anwenden
$mimetype = $var[4]; // Den MIME-Type ermitteln

Mehr dazu auf getimagesize @ php.net. Hoffe geholfen zu haben :slight_smile:

MfG
myPages

Ich denke es wird prinzipiell schwer unter Linux eine dll in eine Anwendung zu laden… :smiley:

Das geht aber nur bei Grafiken nicht wenn es um andere Dateien geht, dann ist der Rückgabewert false.

Ich habe wider erwarten doch noch eine Lösung gefunden.
Und die benötigte magic.mime findet man mit Google recht schnell.
Danke für eure Vorschläge, auch wenn sie für mich nicht neu waren: fileinfo() war beim Test unbekannt und da ich nicht nur Bilder verwende scheidet auch getimagesize() aus.

Naja das klappt wahrscheinlich nicht in allen Fällen.
Im code z.b. Diese Zeile:

$indicator = preg_replace('/\\\\([0-9]{3})/e', 'chr($1);', $indicator);

ASCII Werte die mit einem \ und drei folgenden Ziffern dargestellt werden, sind meistens (eigentlich sogar immer) im Oktalen Zahlensystem notiert.
Ich weiß nicht was du für ein magic.mime gefunden hast. (nach kurz googlen)
Und dort kommen auch \325 und ähnliche Werte vor, chr() kennt aber nur Dezimale Byte werte (0-255), und nur in besonderen Notierungen auch andere Zahlensysteme.
Dem nach müsste die Zeile ein wenig ergänzt werden (mit octdec(); Umwandlung von Oktal in Dezimal):

$indicator = preg_replace('/\\\\([0-9]{3})/e', 'chr(octdec($1));', $indicator);

Ich hoffe ich hab hier jetzt nicht allzuviel stuss geredet.

Sonst aber, denke ich, ne nette Lösung, wenn ich das Prinzip richtig verstanden hab.

mfg Balmung