我一般會選用源碼安裝 php,安裝 php 的過程指定要安裝的擴展,但是避免不了缺少某個擴展未安裝導致程序運行報錯的問題。以 fileinfo 為例,介紹一下怎么添加 php 擴展。
1. 准備
通常遇到報錯:xxx function undefined,而這個函數是系統函數的話,那一定是你缺少某個擴展。添加擴展也非常簡單。首選要確認當前的 php 是哪個版本,不同版本的 php 擴展會有些許出入。然后找到 Php 源碼目錄,也就是從網上下載下來並且解壓的 php 文件包。添加擴展的時候需要在源碼包里面去執行命令。
2. 安裝 fileinfo 擴展
1. 確認 php 版本
php -v # PHP 7.4.4 (cli)
2. 找到 php 可執行文件的位置
whereis php # php: /usr/local/php /usr/local/php/bin/php
可以看出 php 執行文件在 /usr/local/php/bin 目錄里面
那么嘗試執行 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源碼目錄
我的習慣是網絡下載的軟件會放在 /usr/local/src 下面,
cd /usr/local/src/php-7.4.4 cd /etc cd fileinfo
擴展都在源碼目錄的 etc 下面,里面有 curl,gd,ftp 等等擴展目錄,我要安裝 fileinfo,所以到 fileinfo 目錄里面
4.開始安裝
確定目錄下面有 config.m4 文件,如果沒有,應該會有 config0.m4 文件,把 config0.m4 復制一份為 config.m4,如果沒有這個文件,會報錯:can not found config.m4
/usr/local/php/bin/phpize ./configure make && make install
如果這幾行命令運行下來都沒有報錯,那么說明擴展文件已經生成,並且已經自動移入相應位置。接下來就是修改 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 命令安裝,更方便快捷!
更多學習內容請訪問:
騰訊T3-T4標准精品PHP架構師教程目錄大全,只要你看完保證薪資上升一個台階(持續更新)