Ich hatte kürzlich den Fall, dass ich den korrekten MIME-Type einer Datei in PHP ermitteln wollte. Um den korrekten MIME-Type zu ermitteln, sollte dieser aus dem Header der jeweiligen Datei gelesen werden. Leider bietet PHP keine Möglichkeit dies mit dem Standard-Funktionsumfang herauszubekommen.
Ich habe mich dann kurzerhand auf die Google-Suche nach einer passenden Möglichkeit gemacht und bin recht schnell auf die fileinfo-Extension von Ilia Alshanetsky im PECL-Repository gestoßen.
Da ich meine Website lokal auf einem Mac mit OS X 10.5 entwickle und die gesamte Server-Umgebung mit MacPorts installiert habe, verlief die eigentlich einfache Installation der fileinfo-Extension leider nicht ganz ohne Probleme.
Hier eine Schritt-für-Schritt-Anleitung, wie man die Erweiterung installiert:
Schritt 1:
Zunächst sollte man prüfen, ob man bei seiner MacPorts PHP-Istallation die PEAR-Erweiterung mit installiert hat. Dazu kann man sich die Konfiguration des Ports ansehen, mit:
$ sudo port installed | grep php5
Als Ergebnis sollte dann etwa folgendes stehen:
php5 @5.2.6_1+apache2+imap+macosx+mysql5+pear+tidy (active)
Schritt 2:
Um die Extension ohne Fehler zu installieren, muss das fink-Package auf dem Rechner installiert sein. Und über das fink-Package werden dann die Pakete file-shlibs und file-dev installiert.
Das Fink-Package kann als .dmg-Datei hier heruntergeladen werden:
http://www.finkproject.org/download/
Die Installation des Paketes erfolgt über das Installer-Package im Image (.pkg-Datei). Nach erfolgreicher Installation, sollte man den FinkCommander noch ins Programme-Verzeichnis seines Macs kopieren. Dieser liegt auf dem Image im Verzeichnis ‘FinkCommander’. Der FinkCommander ist ein leicht zu bedienendes GUI-Tool für die Installation weiterer Fink-Pakete.
Im FinkCommander nach der Installation in die Suche einfach die beiden Pakete (file-shlibs und file-dev) eingeben und die Pakete installieren lassen.
Schritt 3:
Als nächstes “versuchen” wir die fileinfo-Extension ganz normal zu installieren:
$ sudo /opt/local/bin/pecl install fileinfo
Bei der Installation wird dann beim Versuch die Konfiguration zu erstellen folgende Fehlermeldung erscheinen:
"configure: error: Please reinstall the libmagic distribution"
Die Neuinstallation der libmagic Distribution ist natürlich nicht notwendig, da das config-Script die Bibliothek einfach nicht finden kann. Daher müssen wir dieses Script nun anpassen:
$ sudo vi /private/tmp/pear/download/Fileinfo-1.0.4/configure
Wir suchen im VI die Zeile, in der die SEARCH_PATH-Variable deklariert wird, im VI mit:
/SEARCH_PATH
Diese Zeile muss angepasst werden von
SEARCH_PATH="/usr/local /usr /usr/share/file"
auf:
SEARCH_PATH="/usr/local /usr /usr/share/file /sw"
Nach dem Speichern dieser Ä„nderung, können wir die Konfiguration noch einmal starten:
$ sudo /private/tmp/pear/download/Fileinfo-1.0.4/configure
Die Konfiguration sollte nun ohne Probleme durchlaufen.
Schritt 4:
Nun muss die Extension noch kompiliert werden:
$ cd /private/tmp/pear/download/Fileinfo-1.0.4/
$ sudo make
Und dann erfolgt die Installation der Extension:
$ sudo make install
Die Extension-Datei ‘fileinfo.so’ wurde nun in das Extension-Verzeichnis der PHP-Installation kopiert:
/opt/local/lib/php/extensions/no-debug-non-zts-20060613
Schritt 5:
Nun muss die Extension noch in PHP eingebunden und aktiviert werden. Dazu muss folgende Zeile in die php.ini eingetragen werden:
extension=fileinfo.so
Es muss auch sichergestellt sein, dass die Extension gefunden wird, daher muss das in der php.ini angegebene Verzeichnis für Extensions überprüft werden. Dieses steht standardmäßig auf “./”. In diesem Fall muss es auf den obigen Pfad angepasst werden:
extension_dir="/opt/local/lib/php/extensions/no-debug-non-zts-20060613"
php.ini speichern!
Schritt 6:
Damit die Ąnderungen wirksam werden, muss der Apache neu gestartet werden:
$ apache2ctl graceful
Schritt 7:
Jetzt kann man die Extension mit folgendem PHP-Code kurz testen:
$file = '...put some readable file path here...';
$handle = finfo_open( FILEINFO_MIME );
$mime_type = finfo_file( $handle, $file );
echo $mime_type;
Wenn eine Ausgabe erzeugt wird, war die Installation erfolgreich!
Bei Fragen oder Korrekturhinweisen bitte gern ein Posting machen!




Am 16. Juni 2009 um 21:45 Uhr
[...] a complete second OperatingSystem beneath a perfectly working MacOS. Here for instance I found a way to get the installation working by installing the complete [...]
Am 9. Dezember 2009 um 22:34 Uhr
Hi everyone
I would like to present my site:
Alprazolam kopen Alprazolam buy ambien addiction Amiens jail purchase ativan ativan dog biaxin reproductive biaxin mycoplasma watson carisoprodol carisoprodol discount cipro treat cipro works clomid cost spotting clomid drug clonazepam generic clonazepam Codeine reaction codeine guaifenesin valium diazepam Cheap diazapam dash diet menu diet pregnancy vegetarian effexor and wellbutrin effexor lexapro flomax syncopy pregnancy flomax 5 hydrocodone hydrocodone watson kamagra jelly kamagra einnahme danger levitra levitra sample indication lipitor lipitor patent neurontin tumor cheap neutontin Oxicontin affects oxycontin cost paxil interaction off paxil
To greet!
See you!