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中var_export与var_dump的区别分析
Aug 21 PHP
php生成短网址示例
May 05 PHP
Sublime里直接运行PHP配置方法
Nov 28 PHP
浅谈本地WAMP环境的搭建
May 13 PHP
隐性调用php程序的方法
Jun 13 PHP
如何使用PHP Embed SAPI实现Opcodes查看器
Nov 10 PHP
WordPress中设置Post Type自定义文章类型的实例教程
May 10 PHP
Yii2处理密码加密及验证的方法
May 12 PHP
PHP中有关长整数的一些操作教程
Sep 11 PHP
PHP使用redis位图bitMap 实现签到功能
Oct 08 PHP
tp5 sum某个字段相加得到总数的例子
Oct 18 PHP
laravel框架邮箱认证实现方法详解
Nov 22 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
Terran兵种对照表
2020/03/14 星际争霸
PHP中调用JAVA
2006/10/09 PHP
PHP计算一年多少个星期和每周的开始和结束日期
2014/07/01 PHP
PHP中SimpleXML函数用法分析
2014/11/26 PHP
JS子父窗口互相操作取值赋值的方法介绍
2013/05/11 Javascript
nodejs中使用多线程编程的方法实例
2015/03/24 NodeJs
jQuery的end()方法使用详解
2015/07/15 Javascript
javascript实现图片上传前台页面
2015/08/18 Javascript
jQuery Form 表单提交插件之formSerialize,fieldSerialize,fieldValue,resetForm,clearForm,clearFields的应用
2016/01/23 Javascript
基于javascript实现精确到毫秒的倒计时限时抢购
2016/04/17 Javascript
温习Javascript基础语法之词法结构
2016/05/31 Javascript
Vue.js中用webpack合并打包多个组件并实现按需加载
2017/02/17 Javascript
react性能优化达到最大化的方法 immutable.js使用的必要性
2017/03/09 Javascript
详解如何将angular-ui的图片轮播组件封装成一个指令
2017/05/09 Javascript
JavaScript数据结构与算法之队列原理与用法实例详解
2017/11/22 Javascript
用vuex写了一个购物车H5页面的示例代码
2018/12/04 Javascript
vue + axios get下载文件功能
2019/09/25 Javascript
解决layui的radio属性或别的属性没显示出来的问题
2019/09/26 Javascript
关于vue的列表图片选中打钩操作
2020/09/09 Javascript
[58:23]LGD vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
python解析模块(ConfigParser)使用方法
2013/12/10 Python
Python过滤函数filter()使用自定义函数过滤序列实例
2014/08/26 Python
python爬虫获取京东手机图片的图文教程
2017/12/29 Python
python机器学习理论与实战(一)K近邻法
2021/01/28 Python
numpy返回array中元素的index方法
2018/06/27 Python
Flask框架路由和视图用法实例分析
2019/11/07 Python
We Fashion荷兰:一家国际时装公司
2018/04/18 全球购物
生产车间实习自我鉴定
2013/09/23 职场文书
幼儿园门卫岗位职责
2014/02/14 职场文书
有多年工作经验的自我评价
2014/03/02 职场文书
遗体告别仪式主持词
2014/03/20 职场文书
员工工作表现评语
2014/04/26 职场文书
大型活动组织方案
2014/05/10 职场文书
苏州园林导游词
2015/02/03 职场文书
中标通知书
2015/04/17 职场文书
创业不要错过,这4种餐饮新模式
2019/07/18 职场文书