65

Whenever I try to get the mime content type from php, it echos:

Fatal error: Class 'finfo' not found in /home/jobynadel/finadel.com/video/finfo.php on line 4

or

Fatal error: Call to undefined function finfo_open in /home/jobynadel/finadel.com/video/finfo.php on line 4

I just can't figure it out!

The code I am using is:

$file_info = new finfo(FILEINFO_MIME_TYPE);
// See constant value http://php.net/manual/en/fileinfo.constants.php#113687 
$mime_type = $file_info->buffer(file_get_contents($file));
Ramratan Gupta
  • 1,056
  • 3
  • 17
  • 39
Jobynad
  • 651
  • 1
  • 5
  • 3

8 Answers8

95

Have a look at your php.ini file and check that the fileinfo.soor php_fileinfo.dll is activated (depending on your platform and version).

There should be a line similar to

extension=fileinfo.so

in your php.ini file

jdehaan
  • 19,700
  • 6
  • 57
  • 97
  • `$mime_type` return a string which contains `; charset=` , so to get actual file mime type I have modified the question. – Ramratan Gupta Feb 21 '16 at 10:01
  • I use [this gist](https://gist.github.com/Llewellynvdm/74be373357e131b8775a7582c3de508b) that can be updated with the build script also found here. – Llewellyn Mar 04 '18 at 15:44
28

If you using XAMPP, you enable extension=php_fileinfo.dll in php.ini

binhhoang18
  • 589
  • 6
  • 9
21

What version of PHP do you have? PHP 5.3.0 and later have Fileinfo built in, but on Windows you must enable it manually in your php.ini. You can find further information in the documentation.

Jordan Running
  • 102,619
  • 17
  • 182
  • 182
9

If you are using WAMP then Go to PHP extensions and enbale PHP_fileinfo and restart all serverices.

Vikrant Ramteke
  • 319
  • 4
  • 5
7

Windows users: just edit php.ini and uncomment this line:

extension=php_fileinfo.dll

I.e. remove the preceding semicolon from

;extension=php_fileinfo.dll

Remember to restart Apache for new php.ini to take effect.

Dave
  • 3,073
  • 7
  • 20
  • 33
Peter Moses
  • 1,997
  • 1
  • 19
  • 22
1

For those have had it working fine, but then this error appears:

Some hosting providers (e.g., Dreamhost) allow customers to override default PHP settings in a configuration file, often with a path something like:

~/.php/5.4/phprc

That version number in the path can be a problem if you upgrade PHP (or it is upgraded on your behalf). Any custom settings from the prior version, including one enabling the fileinfo extension, will be missing in the newer version. Usually you can just copy the config file to the appropriate new config directory and restart the server.

Alan Bellows
  • 1,781
  • 1
  • 14
  • 21
1

I had this same issue with PHP.I did the following steps:

 - make sure that the fileinfo extension is already installed if you are using < PHP 5.3.0.

 - Then you have to add in php.ini ;extension=fileinfo.so or
   ;extension=php_fileinfo.dll

 -  If you want to uncomment remove the semicolon(;)
   extension=fileinfo.so or extension=php_fileinfo.dll

Then save and restart your web server.

lalithkumar
  • 3,480
  • 4
  • 24
  • 40
0

For PHP 7.3 or Higher

Change

;extension=fileinfo

To

extension=fileinfo

in php.ini file.

Melaku Minas Kasaye
  • 640
  • 2
  • 8
  • 31