Die PHP-Extension fileinfo unter Mac OS X (MacPorts) installieren

»  Erstellt in Mac OS X Leopard, Nützliches von Holger Schöttle, Sonntag, 27. Juli 2008

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)

Wenn ‘+pear’ in dieser Zeile steht, dann ist das PEAR-Paket mit installiert. Ist das nicht der Fall, muss der PHP5-Port noch einmal neu mit dem ‘+pear’-Argument installiert werden.

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!


2 Reaktionen zu “Die PHP-Extension fileinfo unter Mac OS X (MacPorts) installieren”

  1. andreas.heigl.org » Blog Archiv » fileinfo for PHP on Leopard

    [...] 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 [...]

  2. Dronderia

    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!

Einen Kommentar schreiben

 
RSS-Feed - Alle Beiträge RSS-Feed - Kommentare

Juli 2008
M D M D F S S
« Mai   Sep »
 123456
78910111213
14151617181920
21222324252627
28293031