|  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #71562 fileinfo cannot load distro-provided magic files
Submitted: 2016-02-09 21:06 UTC Modified: 2016-11-24 15:03 UTC
Avg. Score:4.0 ± 0.8
Reproduced:2 of 2 (100.0%)
Same Version:1 (50.0%)
Same OS:2 (100.0%)
From: david dot nielson at cpanel dot net Assigned: remi (profile)
Status: Duplicate Package: Filesystem function related
PHP Version: 7.0.3 OS: Debian Sid; CentOS 6; CentOS 7
Private report: No CVE-ID: None
View Add Comment Developer Edit
Welcome! If you don't have a Git account, you can't do anything here.
You can add a comment by following this link or if you reported this bug, you can edit this bug over here.
Block user comment
Status: Assign to:
Bug Type:
From: david dot nielson at cpanel dot net
New email:
PHP Version: OS:


 [2016-02-09 21:06 UTC] david dot nielson at cpanel dot net
Steps to reproduce:

- Download and compile PHP 7.0.3 from
- Edit attached script to point to the magic file on your system (comments should help)
- run script through PHP 7 binary
- observe unhandled exception
- run script through PHP 5.x
- observe success messages

Additional information:

using strace, I determined that PHP is opening and reading at least some data from the magic file before throwing an exception. I could not see any information from strace to indicate what the problem might be, though.

The exception doesn't say *why* the file couldn't be loaded, and I don't know how I would get more information about the nature of the exception. All I can prove is that it's not ENOENT.

Test script:
  // CentOS keeps its magic file here
  $magic_file = '/usr/share/misc/magic';
  // Debian keeps its magic file here
  $magic_file = '/usr/share/file/magic';

  $finfo = new finfo(FILEINFO_MIME, $magic_file);
  if($finfo) {
    echo "0 fileinfo: create finfo object\n"; } else {
    echo "1 fileinfo: create finfo object failed\n";

  $type = $finfo->file(__FILE__);
  if($type) {
    echo "0 fileinfo: read file type: $type\n"; } else {
    echo "1 fileinfo: read file type failed\n";

Expected result:
Running the script through PHP 5.x returns:

0 fileinfo: create finfo object
0 fileinfo: read file type: text/x-php; charset=us-ascii

Actual result:
0 fileinfo: extension is loaded

Fatal error: Uncaught Exception: finfo::finfo(): Failed to load magic database at '/home/david/code/php/magic'. in /home/david/code/php/php_module_fileinfo.php:35
Stack trace:
#0 /home/david/code/php/php_module_fileinfo.php(35): finfo->finfo(1040, '/home/david/cod...')
#1 {main}
  thrown in /home/david/code/php/php_module_fileinfo.php on line 35


Add a Patch

Pull Requests

Add a Pull Request


AllCommentsChangesGit/SVN commitsRelated reports
 [2016-02-10 11:07 UTC]
-Assigned To: +Assigned To: remi
 [2016-02-10 11:07 UTC]
Remi, could you take a look please?
 [2016-08-02 09:27 UTC]
When "libmagic" change, the format of the magic file sometime also change.

This the reason why PHP use a bundled copy.
 [2016-11-24 15:02 UTC]
-Status: Assigned +Status: Not a bug
 [2016-11-24 15:02 UTC]
See bug #66885.

 [2016-11-24 15:03 UTC]
-Status: Not a bug +Status: Duplicate
 [2016-11-24 15:03 UTC]
change to duplicate.
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Wed Apr 17 23:01:27 2024 UTC