一般會選用源碼安裝 php,安裝 php 的過程指定要安裝的擴展,但是避免不了缺少某個擴展未安裝導(dǎo)致程序運行報錯的問題。以 fileinfo 為例,介紹一下怎么添加 php 擴展。
1. 準備
通常遇到報錯:xxx function undefined,而這個函數(shù)是系統(tǒng)函數(shù)的話,那一定是你缺少某個擴展。添加擴展也非常簡單。首選要確認當前的 php 是哪個版本,不同版本的 php 擴展會有些許出入。然后找到 Php 源碼目錄,也就是從網(wǎng)上下載下來并且解壓的 php 文件包。添加擴展的時候需要在源碼包里面去執(zhí)行命令。
2. 安裝 fileinfo 擴展
1. 確認 php 版本
php -v # PHP 7.4.4 (cli)
2. 找到 php 可執(zhí)行文件的位置
whereis php # php: /usr/local/php /usr/local/php/bin/php
可以看出 php 執(zhí)行文件在 /usr/local/php/bin 目錄里面
那么嘗試執(zhí)行 phpize,保證這個文件存在,phpize 命令在添加擴展的時候需要用到
/usr/local/php/bin/phpize -v # Configuring for: # PHP Api Version: 20190902 # Zend Module Api No: 20190902 # Zend Extension Api No: 320190902
3.進入php源碼目錄
我的習(xí)慣是網(wǎng)絡(luò)下載的軟件會放在 /usr/local/src 下面,
cd /usr/local/src/php-7.4.4 cd /etc cd fileinfo
擴展都在源碼目錄的 etc 下面,里面有 curl,gd,ftp 等等擴展目錄,我要安裝 fileinfo,所以到 fileinfo 目錄里面
4.開始安裝
確定目錄下面有 config.m4 文件,如果沒有,應(yīng)該會有 config0.m4 文件,把 config0.m4 復(fù)制一份為 config.m4,如果沒有這個文件,會報錯:can not found config.m4
/usr/local/php/bin/phpize ./configure make && make install
如果這幾行命令運行下來都沒有報錯,那么說明擴展文件已經(jīng)生成,并且已經(jīng)自動移入相應(yīng)位置。接下來就是修改 php.ini,追加 extension=fileinfo.so 到 php.ini 中。
5.修改php.ini,加載擴展文件
查看 php.ini 的位置
php -i | grep php.ini #Configuration File (php.ini) Path => /usr/local/php/etc #Loaded Configuration File => /usr/local/php/etc/php.ini
可以看到 php.ini 的位置: /usr/local/php/etc/php.ini
vim /usr/local/php/etc/php.ini #添加extension=fileinfo.so,保存 php -m | grep fileinfo #fileinfo
看到輸出 fileinfo,至此,fileinfo 擴展安裝完畢!另外可以使用 pecl 命令安裝,更方便快捷!
推薦教程:《Linux運維》、《PHP教程》