我一般會選用原始碼安裝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
- 進入php原始碼目錄
我的習慣是網路下載的軟體會放在 /usr/local/src 下面,
cd /usr/local/src/php-7.4.4
cd /etc
cd fileinfo
擴充套件都在原始碼目錄的etc下面,裡面有curl,gd,ftp等等擴充套件目錄,我要安裝fileinfo,所以到fileinfo目錄裡面
- 開始安裝
確定目錄下面有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中。
- 修改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命令安裝,更方便快捷!
本作品採用《CC 協議》,轉載必須註明作者和本文連結