LoginSignup
2
1

More than 3 years have passed since last update.

Laravelで"have you enable the php_fileinfo extension?"のエラーでハマったときの解決法(WIN)

Posted at

概要

laravelでアプリケーションを制作していて、画像ファイルのアップロードの際に
Unable to guess the MIME type as no guessers are available (have you enable the php_fileinfo extension?).
のエラーメッセージが出て解決するのに苦労した話を聞いてほしくて記事にする。
error.png

環境

OS: Windows10 バージョン1909
Laravel: 7.16.1
PHP: 7.4.1
開発環境にMAMPを使用

解決策

php.iniに
extension=php_fileinfo.dll
を追記する

解決までの奮闘記

まずはエラーメッセージの内容を把握(エラーメッセージで検索をかけるなどする)
どうもphp_fileinfoという拡張モジュールがないからMIME typeが推測できねぇ、おまえphp_fileinfo持ってる?
みたいなことを言われてるらしい

ほう

そこでphp_fileinfoで検索するといくつかの参考になりそうなサイトが出てきました。
【PHP】PHP extension(PHP拡張モジュール)の確認と有効化(ext-fileinfo、ext-gd編)
PHP: Fileinfo - Manual

記事の中では
php.iniというファイルにいる
;extension=php_fileinfo.dll
extension=php_fileinfo.dll こう
コメントを外して有効化しましょうということでした。

ですが、php初心者の私はphp.iniがどこにいるかわかりません。
php.ini どこphp.ini MAMPなどで検索して以下のような参考サイトを見つけました。

php.iniファイルの場所/PHPのバージョン確認・変更 - MAMPの使い方
もういい加減覚えよう。php.iniはどこにあるのか

記事によるとMAMPでOpen web start pageした後のphpinfoの中にphp.iniのありかが書かれているようでした。
私の場合は以下のような場所
image.png

よっしゃ見つけた。
と思って意気揚々とphp.iniを開いたのですが
いくら探せどphp_fileinfoという文字列が見つかりません。

fileinfoで検索したときはどこのサイトも
;extension=php_fileinfo.dll
extension=php_fileinfo.dll こう
と言ってます。ですがコメントを外そうにもそもそもないのだから始末が悪い
勝手に追記していいものか判断がつかなかったので、もう少し調べて見ることにしました。

いくつかのサイトやディレクトリを漁っているうちに
C:\MAMP\bin\php\php7.4.1\ext
の中にphp_fileinfo.dllがあるのを発見しました。
しかし上記php.iniの場所は
C:\MAMP\conf\php7.4.1\php.ini
であり微妙に違います。
ですが、MAMPのphpのバイナリはC:\MAMP\bin\php\php7.4.1\のなかにphp.exeがあるので
コンフィグファイルとバイナリが別の場所にいるだけで
コンフィグファイルに書いとけばphpがよしなにやってくれるのでは思い
C:\MAMP\conf\php7.4.1\php.ini の中に
extension=php_fileinfo.dll を追記しました。
image.png

そしてサーバー再起動し、いざ画像のアップロードを試したところ
無事アップロードできましたとさ
めでたしめでたし

あとがき

なぜphp.iniにphp_fileinfoの記載がなかったのか未だ謎ですが
phpのバージョンなのかMAMPが原因なのかわかりません。知っている方いたら教えてください。
phpが嫌いになるとこでした、無事解決してよかったです。
同じような不具合に悩まれてる方の助けになれば幸いです。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1