(PHP >= 5.3.0, PHP 7, PHP 8, PECL fileinfo >= 0.1.0)
finfo_open -- finfo::__construct — Create a new finfo instance
Procedural style
Object-oriented style (constructor):
This function opens a magic database and returns its instance.
flags
One or disjunction of more Fileinfo constants.
magic_database
Name of a magic database file, usually something like
/path/to/magic.mime. If not specified, the
MAGIC
environment variable is used. If the
environment variable isn't set, then PHP's bundled magic database will
be used.
Passing null
or an empty string will be equivalent to the default
value.
(Procedural style only)
Returns an finfo instance on success, or false
on failure.
Version | Description |
---|---|
8.1.0 | Returns an finfo instance now; previously, a resource was returned. |
8.0.3 |
magic_database is nullable now.
|
The expected magic database format changed in PHP 5.3.11 and 5.4.1. Due to this, the internal magic database was upgraded. This mostly effects code where an external magic database is used: reading an older magic file will now fail. Also, some textual representations of the mime types has changed, for instance for PHP would be "PHP script, ASCII text" instead of "PHP script text" returned.
Note:
Generally, using the bundled magic database (by leaving
magic_database
and theMAGIC
environment variables unset) is the best course of action unless you specifically need a custom magic database.
Example #1 Object-oriented style
<?php
$finfo = new finfo(FILEINFO_MIME, "/usr/share/misc/magic"); // return mime type ala mimetype extension
/* get mime-type for a specific file */
$filename = "/usr/local/something.txt";
echo $finfo->file($filename);
?>
Example #2 Procedural style
<?php
$finfo = finfo_open(FILEINFO_MIME, "/usr/share/misc/magic"); // return mime type ala mimetype extension
if (!$finfo) {
echo "Opening fileinfo database failed";
exit();
}
/* get mime-type for a specific file */
$filename = "/usr/local/something.txt";
echo finfo_file($finfo, $filename);
/* close connection */
finfo_close($finfo);
?>
The above example will output:
text/plain; charset=us-ascii