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 extension
You 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 extension
With 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.4.tgz
cd Fileinfo-1.0.4/ 
/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)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM