先日、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サーバーを再起動。
これで前述のエラーは解消されるはずだ。