在編譯安裝 PHP 擴展(如 memcache、redis、swoole)時,執行 phpize 若報錯 Cannot find autoconf,說明構建工具鏈缺失 autoconf(及其依賴 m4)。本文提供各主流 Linux 發行版的一鍵修復命令,並解釋底層原理。
$ /usr/local/php/bin/phpize
Configuring for:
PHP Api Version: 20190902
Zend Module Api No: 20190902
Zend Extension Api No: 320190902
Cannot find autoconf. Please check your autoconf installation and the
$PHP_AUTOCONF environment variable is set correctly and then rerun this script.
phpize 腳本內部調用 autoconf 生成 configure 腳本。autoconf 依賴 m4 宏處理器。系統若未預裝或被誤刪,會導致此錯誤。
| 發行版 | 安裝命令 | 說明 |
|---|---|---|
| Ubuntu / Debian | sudo apt-get update && sudo apt-get install -y autoconf | 自動解決 m4 依賴 |
| CentOS / RHEL / Fedora | sudo yum install -y autoconf 或 sudo dnf install -y autoconf | 同理自動安裝 m4 |
| Alpine Linux | apk add --no-cache autoconf | 輕量級容器環境常用 |
| openSUSE | sudo zypper install -y autoconf | |
| Arch Linux | sudo pacman -S autoconf |
# 1. 安裝 m4
cd /usr/src
wget https://ftp.gnu.org/gnu/m4/m4-1.4.19.tar.gz
tar -zxf m4-1.4.19.tar.gz && cd m4-1.4.19
./configure && make && sudo make install
# 2. 安裝 autoconf
cd /usr/src
wget https://ftp.gnu.org/gnu/autoconf/autoconf-2.71.tar.gz
tar -zxf autoconf-2.71.tar.gz && cd autoconf-2.71
./configure && make && sudo make install
# 3. 驗證
autoconf --version
m4 --version
若後續 ./configure 報錯缺少 PHP 头文件,請同時安裝開發包:
sudo apt-get install -y php-dev(或 php7.4-dev 等特定版本)sudo yum install -y php-develapk add --no-cache php8-dev(視版本而定)若無 root 權限或特殊需求,可指定 PHP_AUTOCONF 指向自編譯的 autoconf:
export PHP_AUTOCONF=/home/user/bin/autoconf
export PHP_AUTOHEADER=/home/user/bin/autoheader
phpize
$ phpize
Configuring for:
PHP Api Version: 20190902
Zend Module Api No: 20190902
Zend Extension Api No: 320190902
# 無報錯,生成 configure 腳本,可繼續 ./configure --with-php-config=... && make && make install
Cannot find autoconf 純屬構建工具缺失,一條包管理器安裝命令即可解決 99% 情況。養成「編譯擴展前先裝 php-dev + autoconf」的習慣,能避開絕大多數編譯期坑點。