php 获取 mime type 类型,fileinfo扩展
背景:
version < php-5.3 没有API能够查看文件的 mime_type, 故需要编译扩展 fileinfo 来扩展PHP的API(finfo_*系列函数)。php-5.3 以后将fileinfo 拉入的官方发行包中,将不存在此问题。
知识准备:
MIME type的缩写为(Multipurpose Internet Mail Extensions)代表互联网媒体类型(Internet media type),MIME使用一个简单的字符串组成,最初是为了标识邮件Email附件的类型,在html文件中可以使用content-type属性表示,描述了文件类型的互联网标准。
MIME类型能包含视频、图像、文本、音频、应用程序等数据。为了检测文件的MIME类型,必须配置告知magic文件的地址(如果不指定,默认使用apache 的magic地址)
mime_magic extensionYou must compile PHP with the configure switch --with-mime-magic to get support for mime-type functions. The extension needs a copy of the simplified magic file that is distributed with the Apache httpd. 所以php 在apache mod 模式下的 $_FILE['img']['type'] 字段数据依赖于Apache 发布的相应版本的 magic file.exif extensionWith the exif extension you are able to work with image meta data. For example, you may use exif functions to read meta data of pictures taken from digital cameras by working with information stored in the headers of the JPEG and TIFF images.
软件准备:
php: php-5.2.14
Fileinfo: Fileinfo-1.0.4.tgz
file: file-5.20.tar.gz
1、file 安装
wget ftp://ftp.astron.com/pub/file/file-5.15.tar.gz
tar zxf file-5.20.tar.gz
cd file-5.20/
./configure --prefix=/usr/local/services/file-5.20
make
make install
2、Fileinfo扩展编译安装
wget http://pecl.php.net/get/Fileinfo-1.0.4.tgz
tar zxf Fileinfo-1.0..tgz
cd Fileinfo-1.0./
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config --with-fileinfo=/usr/local/services/file-5.20/
make
#拷贝fileinfo.so 到php.ini 中定义的 extension_dir
cp fileinfo.so /usr/local/php/extensions/ #修改php.ini
echo "extension=fileinfo.so" >> /usr/local/php/lib/php.ini
3、验证
php -m | grep fileinfo
fileinfo
备注:
1、安装软件注意查看 ./configure --help 其中会指出库或头文件的依赖
2、扩展移植,查看依赖, 移植需要注意对:libmagic.so.1 的依赖
ldd /usr/local/php/extensions/fileinfo.so
linux-vdso.so.1 => (0x00007fff9b7ff000)
libmagic.so.1 => /usr/local/lib/libmagic.so.1 (0x00007f8493582000)
libc.so.6 => /lib64/libc.so.6 (0x00007f8493342000)
libz.so.1 => /lib64/libz.so.1 (0x00007f849322d000)
/lib64/ld-linux-x86-64.so.2 (0x00007f84937a4000)
php 获取 mime type 类型,fileinfo扩展的更多相关文章
- mime type 类型名字应该用多长的字段?
在使用 FastAdmin 时有 mimetype 字段使用了 50 长度,有小伙伴反应,不够. 在 Linux 服务器上时 xlsx 文件的 mimetype 是 application/vnd. ...
- 学习PHP中Fileinfo扩展的使用
今天来学习的这个扩展其实现在也已经是标配的一个扩展了,为什么呢?因为 Laravel 框架在安装的时候它就是必须的一个扩展,没有打开它的话,连 Laravel 框架都是无法使用的. Fileinfo ...
- MIME Type介绍 Content-Type 各种定义
多用途互联网邮件扩展(MIME,Multipurpose Internet Mail Extensions)是一个互联网标准,它扩展了电子邮件标准,使其能够支持非ASCII字符.二进制格式附件等多种格 ...
- File upload - MIME type
Your goal is to hack this photo galery by uploading PHP code.Retrieve the validation password in the ...
- php获取文件mime类型Fileinfo等方法
前几天写到使用wordpress xmlrpc api远程发布文章,如果本地服务器的文章库里某一篇待发表的wordpress文章包含图片文件时,就会使用到WordPress上传文件的API metaW ...
- [笔记] C# 如何获取文件的 MIME Type
MIME Type 为何物: MIME 参考手册 svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types 常规方式 对于有文件后 ...
- js 获取input type="file" 选择的文件大小、文件名称、上次修改时间、类型等信息
文件名的传递 ---全路径获取 $('#file').change(function(){ $('#em').text($('#file').val()); }); 文件名的传递 ---只获取文件名 ...
- C#获取文件的Content-Type(MIME Type)的方法
使用静态类MimeMapping(需要.NET Framework 4.5及以后的支持) string fileName = "D:\myfile.txt"; var conten ...
- windows环境开启PHP fileinfo扩展
fileinfo作用:本模块中的函数通过在文件的给定位置查找特定的 魔术 字节序列 来猜测文件的内容类型以及编码(通俗来讲就是获取文件的MIME信息) 开启PHP fileinfo扩展的方法: 1.下 ...
随机推荐
- python金融与量化分析----Jupyter Notebook使用
Jupyter Notebook(此前被称为 IPython notebook)是一个交互式笔记本,支持运行 40 多种编程语言.在本文中,我们将介绍 Jupyter notebook 的主要特性,以 ...
- Django中,ajax检测注册用户信息是否可用?
ajax检测注册用户信息主体思路 1.在settings.py中配置需要使用的信息 #对static文件进行配置 STATICFILES_DIRS=[ os.path.join(BASE_DIR,'s ...
- [No000015D]【李笑来 笔记整理】个人商业模式升级
提前知道地图对你到达目标是至关重要的. 比较女性与男性的成本:女性的成本更高(周期性激素分泌波动),所以不要再这个时候和女朋友较劲,她也是身不由己,当你知道这件事情之后,你就会试着去理解她. 下面这张 ...
- nginx之fastcgi和PHP的PHP-FPM
php-fpm:PHP fastcgi进程管理器 php-fpm的工作模式:1个master进程.多个worker进程(在PHP中worker进程就是php-cgi进程),php-cgi是PHP的解释 ...
- mvc 使用Newtonsoft.Json进行序列化json数据
mvc 使用Newtonsoft.Json进行序列化json数据 JsonResult 使用js 序列号化,先集成扩展.使用newtonsoft http://blog.csdn.net/zhang ...
- 转:JVM 内存初学 (堆(heap)、栈(stack)和方法区(method) )
原文地址:JVM 内存初学 (堆(heap).栈(stack)和方法区(method) ) 博主推荐 深入浅出JVM 这本书 先了解具体的概念:JAVA的JVM的内存可分为3个区:堆(heap).栈( ...
- MonkeyRunner_运行脚本(一)
前提:环境已部署, 使用数据线连接上真机 一.使用cmd窗口单步执行monkeyrunner命令 打开cmd窗口,输入monkeyrunner (前提设置好环境变量):然后按照monkeyrunne ...
- 在Windows Server 2008 R2 Server中,上传视频遇到的问题(二)
上一篇 在Windows Server 2008 R2 Server中,上传视频遇到的问题(一)中遇到上传40M视频报404,然后修改配置文件节点: <httpRuntime targetFr ...
- zabbix准备:nginx安装
一.nginxs的三个依赖包 1.zlib库. gzip 模块需要 zlib 库 ( 下载: http://www.zlib.net/ ) gzip(GNU-ZIP)是一种压缩技术.经过gzip ...
- system.out.printf()的使用方法
package com.lzc.test; public class Main { public static void main(String[] args) { // 定义一些变量,用来格式化输出 ...