先日、PHPで画像ファイルのアップロード処理をおこなうプログラムを作っていたところ、以下のエラーが発生した。

undefined function finfo_buffer()

finfo_buffer()関数が定義されていない、という意味のエラーで、今回はこのエラーの解決法を紹介する。

finfo_buffer関数とは

finfo_buffer関数は、画像などのバイナリファイルのMIMETYPEなどの情報を取得する際に使われる関数だ。

// 画像のMIMETYPEを取得する例
$data = "画像ファイルのパス";
$mimeType = finfo_buffer(finfo_open(), $data, FILEINFO_MIME_TYPE);

上記の例は、指定した画像ファイルのMIMETYPEを取得する例で、3行目で今回のエラーが発生した。

undefined function finfo_buffer()の解決法

finfo_buffer関数を使って今回のエラーが発生する原因は、使用しているPHP環境に必要なモジュールが不足していることにある。

モジュールを追加するためには、まずphp.iniファイルを開き、下記のコメントアウトされている部分をコメントインする。

;extension=fileinfo

↓ コメントイン

extension=fileinfo

ファイルを保存したらWebサーバーを再起動。

これで前述のエラーは解消されるはずだ。