fileinfo for PHP on Leopard

Currently I had to use the fileinfo-Package on my development-system which is a MacBook Pro running MacOS 10.5 with Marc Lianages PHP-Package.

But sadly that does not contain the fileinfo-extension.

No Problem I thought: Installing a PECL-Extension isn’t hard work.

At least if it works….

Of course I ran into the problem that I couldn’t compile the fileinfo extension due to the following error-message

configure: error: Please reinstall the libmagic distribution
ERROR: `/private/tmp/pear/download/Fileinfo-1.0.4/configure' failed

I can’t be the only one that ran into the problem, I thought. And so it was.

While searching the internet, I generally found two ways to solve the problem.

  1. Use PHP 5.3, that already contains the package
  2. Install 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 fink-package.

Using PHP 5.3 was no option for me, as we are developing for PHP5.2 and installing a second Operating System seemed somewhat oversized for the simple task of installing a small PHP-extension.

Back to the roots

So what was the original problem again? A missing installation of the libmagic-library. Event though the info-binary is installed on the MacOS I’m running, a shared libmagic-Library is missing.

So what the hell, why not compile one?

  • So I got myself the current binaries from http://www.darwinsys.com/file/ unpacked the source and pulled out the Terminal.

    cd /path/to/unpacked/source  
    ./configure --prefix=/usr/local/libmagic 
    make 
    sudo make install 
    

    That left me with a running shared library of libmagic in the folder /usr/local/libmagic/lib

  • Second I used the already loaded source of the fileinfo-extension that caused the error due to the missing libmagic-library.

    So I opened /private/tmp/pear/download/Fileinfo-1.0.4/configure with my favourite Text-Editor (currently it is TextWrangler) and went to somewhere around line 4212 and changed it from

    SEARCH_PATH="/usr/local /usr /usr/share/file"

    to

    SEARCH_PATH="/usr/local /usr /usr/share/file /usr/local/libmagic"

    and again took my Terminal to go to the fileinfo-directory and finally compile the fileinfo-extension

    cd /private/tmp/pear/download/Fileinfo-1.0.4/
    ./configure
    
  • Because of the apache2 on my MacBook Pro that somehow thinks it is running on a 64bit Machine, even though it definitely is a 32bit one – would be nice though – I had to adapt the build-process somewhat by compiling a universal-binary so that the extension will be loaded by the apache.

    Some info on that can be found here and here at Apples Developer pages

    So I ran the following command in Terminal

    make CFLAGS="-arch i386 -arch ppc64 -arch x86_64" LDFLAGS="-arch ppc -arch i386 -arch ppc64 -arch x86_64"
    sudo make install
    

    Aternatively you can export the CFLAGS and LDFLAGS variable by running these commands in Terminal:

    export FLAGS="-arch i386 -arch ppc64 -arch x86_64"
    export LDFLAGS="-arch ppc -arch i386 -arch ppc64 -arch x86_64"
    

    Then you can simply run

    ./configure
    make
    make install
    

    That’s been the hard bit.

  • Last Steps

    Now the only things missing are the integration into php and the restart of the WebServer.

    For integrating the extension into php I added a file to the php-Directory via

    vi /usr/local/php5/php.d/50-extension-fileinfo
    

    where I simply added the line

    extension=fileinfo.so
    

  • And finaly the restart of the WebServer with

    sudo apachectl restart (or graceful)
    

Now I can call a phpinfo-file and there should be a line stating that the fileinfoextension is enabled.

1 thought on “fileinfo for PHP on Leopard

Comments are closed.

To respond on your own website, enter the URL of your response which should contain a link to this post's permalink URL. Your response will then appear (possibly after moderation) on this page. Want to update or remove your response? Update or delete your post and re-enter your post's URL again. (Find out more about Webmentions.)

Mentions

Mentions

  • Andreas Heigl