Linux 上安裝 PHP 擴充套件

1711293058發表於2020-04-26

我一般會選用原始碼安裝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
  1. 進入php原始碼目錄

我的習慣是網路下載的軟體會放在 /usr/local/src 下面,

cd /usr/local/src/php-7.4.4
cd /etc
cd fileinfo

擴充套件都在原始碼目錄的etc下面,裡面有curl,gd,ftp等等擴充套件目錄,我要安裝fileinfo,所以到fileinfo目錄裡面

  1. 開始安裝

確定目錄下面有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中。

  1. 修改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 協議》,轉載必須註明作者和本文連結

相關文章