I ran into some trouble installing the Fileinfo extension for PHP on CentOS. I tried installing the extension using yum and all went well until I saw these errors:
PHP Warning: PHP Startup: fileinfo: Unable to initialize module Module compiled with module API=20050922, debug=0, thread-safety=0 PHP compiled with module API=20060613, debug=0, thread-safety=0 These options need to match
Like I said, I installed the extension using yum, so I checked out what I had installed:
$ yum list installed | grep "php-pecl-Fileinfo" php-pecl-Fileinfo.x86_64 1.0.4-3.el5.centos installed
Oh crap, I always forget to pull these things from the Atomicorp repository because my php is from there.
$ yum list installed | grep "php.x86_64" php.x86_64 5.2.13-1.el5.art installed
Well, the bad news is that the Fileinfo extension is not available on the Atomicorp repo. Hmm. Ok, so my next step is to remove the thing and install it with PECL.
$ sudo yum erase php-pecl-Fileinfo.x86_64 ... Running Transaction Erasing : php-pecl-Fileinfo 1/1 warning: /etc/php.d/Fileinfo.ini saved as /etc/php.d/Fileinfo.ini.rpmsave Removed: php-pecl-Fileinfo.x86_64 0:1.0.4-3.el5.centos Complete! $ sudo rm /etc/php.d/Fileinfo.ini.rpmsave $
I didn’t need that config file, because I never got it to work!
Install Fileinfo with PECL
Before anything else, here is the system I’m using:
$ cat /etc/redhat-release CentOS release 5.4 (Final) $ php -v PHP 5.2.13 (cli) (built: Mar 2 2010 18:08:48) Copyright (c) 1997-2010 The PHP Group Zend Engine v2.2.0, Copyright (c) 1998-2010 Zend Technologies $ pecl -V PEAR Version: 1.9.0 PHP Version: 5.2.13 Zend Engine Version: 2.2.0 Running on: Linux system.local 2.6.18-028stab064.7 #1 SMP Wed Aug 26 13:11:07 MSD 2009 x86_64
If the PHP extension that I’m after is not in the yum repo then I usually just install it with PECL. It is fairly painless.
$ sudo pecl install fileinfo audit_log_user_command(): Connection refused WARNING: "pear/Fileinfo" is deprecated in favor of "channel://php-src/ext/fileinfo/in php sources" downloading Fileinfo-1.0.4.tgz ... Starting to download Fileinfo-1.0.4.tgz (5,835 bytes) .....done: 5,835 bytes 3 source files, building running: phpize ...lotsa crap... build process completed successfully Installing '/usr/lib64/php/modules/fileinfo.so' install ok: channel://pear.php.net/Fileinfo-1.0.4 $
The PECL warning is trying to let you know that Fileinfo is bundled with PHP 5.3 and you don’t need to install if you are running PHP 5.3, but I’m running 5.2 so that warning is not for me. Okay, now we turn on the extension by putting “extension=fileinfo.so” somewhere in the /etc/php.ini file.
$ sudo vim /etc/php.ini $
And make the change…
640 | extension=fileinfo.so |
Now restart apache…
$ sudo /sbin/service httpd restart audit_log_user_command(): Connection refused Stopping httpd: [ OK ] Starting httpd: [ OK ] $
Okay, let’s find out if it is in the phpinfo…
$ php -r "phpinfo();" | grep "fileinfo" fileinfo fileinfo support => enabled
Yay!!!