PHP文件類型檢查及fileinfo模塊安裝使用詳解
在web系統(tǒng)開發(fā)中,文件上傳功能是非常常見的功能,這個(gè)功能開發(fā)中有一個(gè)非常關(guān)鍵的步驟:文件類型檢查,這對(duì)于系統(tǒng)安全性起著很重要的作用,也是一個(gè)合格的程序員必須要做的。那么在PHP 中如何進(jìn)行文件類型檢查呢?
文件類型檢查方法
在回答這個(gè)問題之前, 首先看一下你的 PHP 版本,因?yàn)椴煌姹究赡芊椒ú煌?/p>
在 PHP 5.3之前,可以使用mime_content_type方法檢查;
但是 PHP 5.3之后, 這個(gè)方法被廢棄了,原因是這個(gè)方法存在比較多的問題;
這里建議大家把 PHP 5.3以下版本進(jìn)行升級(jí),因?yàn)镻HP7都出來了, 你還在用PHP5.2 甚至更老的版本,這完全不符合互聯(lián)網(wǎng)圈快速迭代,與時(shí)俱進(jìn)的風(fēng)格。不開玩笑的講, PHP7確實(shí)有非常大的性能提升。
所以呢,我們只說一下 PHP 5.3 以后的文件類型檢查方法:使用fileinfo庫
fileinfo模塊的使用方法
官方文檔中對(duì)于 fileinfo 模塊的簡介:本模塊中的函數(shù)通過在文件的給定位置查找特定的 魔術(shù) 字節(jié)序列 來猜測文件的內(nèi)容類型以及編碼。 雖然不是百分百的精確, 但是通常情況下能夠很好的工作。
先上代碼吧
$fileName = 'www.pythontab.com.png'; $fip = finfo_open(FILEINFO_MIME); // 返回 mime 類型 echo finfo_file($fip, $fileName); finfo_close($fip);
這樣就可以直接輸出文件的 Mime 類型了,還是比較簡單的。
fileinfo 模塊安裝
但是, PHP 默認(rèn)并沒有開啟 fileinfo 模塊,默認(rèn)不會(huì)安裝這個(gè)庫, 所以我們要自己安裝一下才可以使用。
下面來看下如何安裝 fileinfo 模塊:
1 下載擴(kuò)展包
根據(jù)各自的版本號(hào)進(jìn)行下載
wget -O php-5.6.25.tar.gz http://cn2.php.net/get/php-5.6.25.tar.gz/from/this/mirror
這里也可以單獨(dú)下載 fileinfo 包
wget -O http://pecl.php.net/get/Fileinfo-1.0.4.tgz
2 解壓
tar -zxvf php-5.6.25.tar.gz
3 進(jìn)入該擴(kuò)展目錄
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
這樣,就會(huì)在系統(tǒng)默認(rèn)的擴(kuò)展目錄下新生成一個(gè)fileinfo.so文件
5 修改php.ini文件
vim /usr/local/php/etc/php.ini
加入:extension=fileinfo.so
重啟 php, 至此安裝完成
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
php設(shè)計(jì)模式之中介者模式分析【星際爭霸游戲案例】
這篇文章主要介紹了php設(shè)計(jì)模式之中介者模式,結(jié)合具體案例形式分析了星際爭霸游戲中使用PHP中介者模式的相關(guān)操作技巧,需要的朋友可以參考下2020-03-03
Swoole?webSocket客服IM消息系統(tǒng)方案解析
這篇文章主要為大家介紹了Swoole?webSocket客服IM消息系統(tǒng)方案解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03
PHP 超高性能可擴(kuò)展HTTP服務(wù)框架Webman
本文主要介紹了超高性能可擴(kuò)展HTTP服務(wù)框架Webman,webman用于替代傳統(tǒng)的php-fpm架構(gòu),提供超高性能可擴(kuò)展的HTTP服務(wù),感興趣的可以了解一下2024-02-02
PHP基于進(jìn)程控制函數(shù)實(shí)現(xiàn)多線程
這篇文章主要介紹了PHP基于進(jìn)程控制函數(shù)實(shí)現(xiàn)多線程,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-12-12

