PHP文件类型检查及fileinfo模块安装使用详解


Posted in PHP onMay 09, 2019

在web系统开发中,文件上传功能是非常常见的功能,这个功能开发中有一个非常关键的步骤:文件类型检查,这对于系统安全性起着很重要的作用,也是一个合格的程序员必须要做的。那么在PHP 中如何进行文件类型检查呢?

文件类型检查方法

在回答这个问题之前, 首先看一下你的 PHP 版本,因为不同版本可能方法不同:

在 PHP 5.3之前,可以使用mime_content_type方法检查;

但是 PHP 5.3之后, 这个方法被废弃了,原因是这个方法存在比较多的问题;

这里建议大家把 PHP 5.3以下版本进行升级,因为PHP7都出来了, 你还在用PHP5.2 甚至更老的版本,这完全不符合互联网圈快速迭代,与时俱进的风格。不开玩笑的讲, PHP7确实有非常大的性能提升。

所以呢,我们只说一下 PHP 5.3 以后的文件类型检查方法:使用fileinfo库

fileinfo模块的使用方法

官方文档中对于 fileinfo 模块的简介:本模块中的函数通过在文件的给定位置查找特定的 魔术 字节序列 来猜测文件的内容类型以及编码。 虽然不是百分百的精确, 但是通常情况下能够很好的工作。

先上代码吧

$fileName = 'www.pythontab.com.png';
$fip = finfo_open(FILEINFO_MIME); // 返回 mime 类型
echo finfo_file($fip, $fileName);
finfo_close($fip);

这样就可以直接输出文件的 Mime 类型了,还是比较简单的。

fileinfo 模块安装

但是, PHP 默认并没有开启 fileinfo 模块,默认不会安装这个库, 所以我们要自己安装一下才可以使用。

下面来看下如何安装 fileinfo 模块:

1 下载扩展包

根据各自的版本号进行下载

wget -O php-5.6.25.tar.gz http://cn2.php.net/get/php-5.6.25.tar.gz/from/this/mirror

这里也可以单独下载 fileinfo 包

wget -O http://pecl.php.net/get/Fileinfo-1.0.4.tgz

2 解压

tar -zxvf php-5.6.25.tar.gz

3 进入该扩展目录

cd /soft_src/php/php-5.6.25/ext/fileinfo

4 编译 && 安装

/usr/local/php/bin/phpize
./configure -with-php-config=/usr/local/php/bin/php-config
make && make install

这样,就会在系统默认的扩展目录下新生成一个fileinfo.so文件

5 修改php.ini文件

vim /usr/local/php/etc/php.ini

加入:extension=fileinfo.so

重启 php, 至此安装完成

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
用PHP生成自己的LOG文件
Oct 09 PHP
PHP 内存缓存加速功能memcached安装与用法
Sep 03 PHP
php 按指定元素值去除数组元素的实现方法
Nov 04 PHP
PHP的变量类型和作用域详解
Mar 12 PHP
PHP中数据库单例模式的实现代码分享
Aug 21 PHP
php中smarty实现多模版网站的方法
Jun 11 PHP
PHP导出带样式的Excel示例代码
Aug 28 PHP
php实现HTML实体编号与非ASCII字符串相互转换类实例
Nov 02 PHP
PHP开发中csrf攻击的简单演示和防范
May 07 PHP
PHP 获取客户端 IP 地址的方法实例代码
Nov 11 PHP
YII框架实现自定义第三方扩展操作示例
Apr 26 PHP
浅谈laravel 5.6 安装 windows上使用composer的安装过程
Oct 18 PHP
php使用mysqli和pdo扩展,测试对比mysql数据库的执行效率完整示例
May 09 #PHP
php使用mysqli和pdo扩展,测试对比连接mysql数据库的效率完整示例
May 09 #PHP
PHP CURL中传递cookie的方法步骤
May 09 #PHP
PHP正则表达式处理函数(PCRE 函数)实例小结
May 09 #PHP
Laravel配置全局公共函数的方法步骤
May 09 #PHP
Laravel Validator自定义错误返回提示消息并在前端展示
May 09 #PHP
PHP正则表达式笔记与实例详解
May 09 #PHP
You might like
PHP 数组遍历顺序理解
2009/09/09 PHP
屏蔽机器人从你的网站搜取email地址的php代码
2012/11/14 PHP
php生成随机颜色方法汇总
2014/12/03 PHP
PHP实现图片防盗链破解操作示例【解决图片防盗链问题/反向代理】
2020/05/29 PHP
javascript计算用户打开网页的停留时间
2014/01/09 Javascript
JS将制定内容复制到剪切板示例代码
2014/02/11 Javascript
谷歌浏览器不支持showModalDialog模态对话框的解决方法
2014/09/22 Javascript
HTML5 Shiv完美解决IE(IE6/IE7/IE8)不兼容HTML5标签的方法
2015/11/25 Javascript
JavaScript中eval函数的问题
2016/01/31 Javascript
基于JS实现发送短信验证码后的倒计时功能(无视页面刷新,页面关闭不进行倒计时功能)
2016/09/02 Javascript
Bootstrap栅格系统的使用和理解2
2016/12/14 Javascript
Vue常用指令V-model用法
2017/03/08 Javascript
微信小程序 图片宽度自适应的实现
2017/04/06 Javascript
JavaScript实现简单的双色球(实例讲解)
2017/07/31 Javascript
ionic2屏幕适配实现适配手机、平板等设备的示例代码
2017/08/11 Javascript
JS基于正则表达式实现的密码强度验证功能示例
2017/09/21 Javascript
Angular HMR(热模块替换)功能实现方法
2018/04/04 Javascript
解决vue+element 键盘回车事件导致页面刷新的问题
2018/08/25 Javascript
vue.extend与vue.component的区别和联系
2018/09/19 Javascript
layerui代码控制tab选项卡,添加,关闭的实例
2019/09/04 Javascript
JavaScript进阶(一)变量声明提升实例分析
2020/05/09 Javascript
vue总线机制(bus)知识点详解
2020/05/10 Javascript
微信小程序以7天为周期连续签到7天功能效果的示例代码
2020/08/20 Javascript
简介Python中用于处理字符串的center()方法
2015/05/18 Python
Python多线程Threading、子线程与守护线程实例详解
2020/03/24 Python
移动端HTML5实现文件上传功能【附代码】
2016/03/25 HTML / CSS
Fnac西班牙官网:法国文化和电子产品零售商
2021/03/14 全球购物
经贸日语毕业生自荐信
2013/11/03 职场文书
2014基层党员干部学习全国两会心得体会
2014/03/17 职场文书
社区党务公开实施方案
2014/03/18 职场文书
股份合作协议书
2014/04/12 职场文书
大学活动总结范文
2014/04/29 职场文书
经典禁毒标语
2014/06/16 职场文书
2014客服代表实习自我鉴定
2014/09/18 职场文书
Python实现智慧校园自动评教全新版
2021/06/18 Python
利用python实时刷新基金估值(摸鱼小工具)
2021/09/15 Python