# finfo_open

# finfo::__construct

(PHP >= 5.3.0, PECL fileinfo >= 0.1.0)

finfo_open -- finfo::__construct — 创建一个 fileinfo 资源

### 说明

过程化风格

finfo_open ([ int `$options` = FILEINFO_NONE [, string `$magic_file` = `NULL` ]] ) : resource

面向对象风格 （构造器）：

public finfo::__construct ([ int `$options` = FILEINFO_NONE [, string `$magic_file` = `NULL` ]] )

本函数打开一个魔数数据库并且返回它的资源。

### 参数

`options`

  一个 Fileinfo 常量 或多个 Fileinfo 常量 进行逻辑或运算。

`magic_file`

  魔数数据库文件名称， 通常是 /path/to/magic.mime。 如果未指定，则使用 MAGIC 环境变量。 如果未指定此环境变量， 则使用 PHP 绑定的魔数数据库。

  传入 `NULL` 或者空字符串，等同于使用默认值。

### 返回值

（仅适用于过程化风格） 如果成功则返回一个表示魔数数据库的资源， 或者在失败时返回 `FALSE`。

### 注释

Warning

在 PHP 5.3.11 和 5.4.1 中预期的魔数数据库格式发生了变动， 所以，内置的魔数数据库被更新。 如果使用了外部魔数数据库， 可能会由于格式不同导致读取失败。 同时，一些 mime 类型的文字表示也发生了变化， 例如，PHP 文件的 mime 类型由 “"PHP script text” 变为“PHP script, ASCII text”。

> Note:

> 通常来说，使用 PHP 绑定的魔数数据库（设置 `magic_file` 参数为空， 不设置 MAGIC 环境变量）是最好的选择， 除非你确实需要一个自定义的魔数数据库。

### 范例

Example #1 面向对象风格

    <?php
    $finfo = new finfo(FILEINFO_MIME, "/usr/share/misc/magic"); // 返回 mime 类型

    /* get mime-type for a specific file */
    $filename = "/usr/local/something.txt";
    echo $finfo->file($filename);

    ?>

Example #2 过程化风格

    <?php
    $finfo = finfo_open(FILEINFO_MIME, "/usr/share/misc/magic"); // 返回 mime 类型

    if (!$finfo) {
        echo "Opening fileinfo database failed";
        exit();
    }

    /* 获取指定文件的 mime 类型 */
    $filename = "/usr/local/something.txt";
    echo finfo_file($finfo, $filename);

    /* 关闭资源 */
    finfo_close($finfo);
    ?>

以上例程会输出：

    text/plain; charset=us-ascii

### 参见

- finfo_close() - 关闭 fileinfo 资源