首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 擴展編譯報錯「Cannot find autoconf」完整解決方案

     編輯:PHP 相關知識

PHP 擴展編譯報錯「Cannot find autoconf」完整解決方案

在編譯安裝 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 / Debiansudo apt-get update && sudo apt-get install -y autoconf自動解決 m4 依賴
CentOS / RHEL / Fedorasudo yum install -y autoconf 或 sudo dnf install -y autoconf同理自動安裝 m4
Alpine Linuxapk add --no-cache autoconf輕量級容器環境常用
openSUSEsudo zypper install -y autoconf
Arch Linuxsudo 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

補充:PHP 開發包也需安裝

若後續 ./configure 報錯缺少 PHP 头文件,請同時安裝開發包:

  • Ubuntu/Debian: sudo apt-get install -y php-dev(或 php7.4-dev 等特定版本)
  • CentOS/RHEL: sudo yum install -y php-devel
  • Alpine: apk 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」的習慣,能避開絕大多數編譯期坑點。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved