本地Nginx服务器启用MIME方法及Laravel 5.6图片上传报错求助
嘿,我来帮你解决这两个问题——先搞定Laravel上传图片的MIME报错,再讲Nginx的MIME配置,一步步来:
你看到的**"无法猜测MIME类型,因为没有可用的猜测器(您是否启用了php_fileinfo扩展?)"**这个报错,本质是Laravel的文件验证规则依赖php_fileinfo扩展来识别文件类型,但这个扩展目前没开启。下面是具体的开启步骤:
1. 启用php_fileinfo扩展
Windows环境
- 找到你的PHP安装目录下的
php.ini配置文件(如果是集成环境比如XAMPP,就在xampp/php目录里) - 打开文件后,找到一行带
;extension=fileinfo的代码,把前面的分号;删掉,这就相当于开启了扩展 - 保存文件,然后重启你的Nginx和PHP服务(比如XAMPP里直接重启对应模块就行)
Linux/macOS环境
- 如果是用包管理器装的PHP,直接安装对应扩展:
- Ubuntu/Debian:
sudo apt-get install php-fileinfo - CentOS/RHEL:
sudo yum install php-fileinfo - macOS(用brew的话):
brew install php-fileinfo
- Ubuntu/Debian:
- 装完之后,重启Nginx和PHP-FPM服务:
sudo systemctl restart nginxsudo systemctl restart php-fpm(注意如果是特定PHP版本,比如7.4,就是php7.4-fpm)
2. 验证扩展是否生效
可以在项目根目录或者Web根目录新建一个phpinfo.php文件,内容如下:
<?php phpinfo(); ?>
访问这个文件,搜索fileinfo,如果能看到扩展的详细信息,就说明开启成功了。
Nginx默认已经配好了常见的MIME类型,但如果需要自定义或者确认配置没问题,按以下步骤来:
1. 找到MIME配置文件
Nginx的MIME类型配置一般在mime.types文件里,路径通常是/etc/nginx/mime.types(Linux)或者nginx/conf/mime.types(Windows本地安装版)。
2. 检查/添加MIME类型
打开mime.types,里面已经有很多默认的映射,比如:
image/jpeg jpeg jpg; image/png png; image/gif gif; image/svg+xml svg;
要是你有特殊的文件类型需要添加,直接在对应的分类下面加就行。
3. 确保站点配置加载MIME规则
打开你的Nginx站点配置文件(比如/etc/nginx/sites-available/your-laravel-site.conf),确认里面有这两行:
include mime.types; default_type application/octet-stream;
一般这两行会在Nginx的主配置nginx.conf里已经存在,站点配置会自动继承,但最好检查一下以防万一。
4. 重启Nginx生效
修改完配置后,执行命令重启Nginx:
# Linux系统 sudo systemctl restart nginx # Windows系统(命令行进入Nginx安装目录后) nginx -s reload
做完这些步骤,Laravel的图片验证应该就能正常工作,Nginx的MIME配置也会完全生效啦。
内容的提问来源于stack exchange,提问作者Mr. Piyush Ghosh

