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

PHP 原始碼編譯安裝常見錯誤彙總與解決方案(CentOS/Ubuntu)

     編輯:PHP 綜合知識

前言

PHP 源碼編譯安裝時,configure 階段常因缺少開發套件而報錯。本文彙總高頻錯誤與對應的 yum/apt 安裝指令,涵蓋 CentOS/RHEL 與 Ubuntu/Debian 兩大系列,方便快速排查。

一、 常見 configure 錯誤對照表

錯誤訊息缺少套件CentOS/RHEL (yum)Ubuntu/Debian (apt)
libevent >= 1.4.11 could not be foundlibeventyum -y install libevent libevent-develapt-get install libevent-dev
Please reinstall the mysql distributionMySQL 開發庫yum -y install mysql-develapt-get install libmysqlclient-dev
make: *** [sapi/fpm/php-fpm] error 1iconv 連結問題make ZEND_EXTRA_LIBS='-liconv'同左(或安裝 libiconv)
XML configuration could not be foundlibxml2yum -y install libxml2 libxml2-develapt-get install libxml2-dev
No curses/termcap library foundncursesyum -y install ncurses ncurses-develapt-get install libncurses5-dev
xml2-config not foundlibxml2yum -y install libxml2 libxml2-develapt-get install libxml2-dev
Cannot find OpenSSL's <evp.h>OpenSSLyum install openssl openssl-develapt-get install libssl-dev
Please reinstall the libcurl distributioncURLyum install curl curl-develapt-get install libcurl4-gnutls-dev
Cannot find ldap.hOpenLDAPyum install openldap openldap-develapt-get install libldap2-dev
libjpeg.(a|so) not foundlibjpegyum install libjpeg libjpeg-develapt-get install libjpeg-dev
libpng.(a|so) not foundlibpngyum install libpng libpng-develapt-get install libpng-dev
freetype.h not foundfreetypeyum install freetype-develapt-get install libfreetype6-dev
cannot find output from lex; giving upflexyum -y install flexapt-get install flex
mod_deflate: prerequisite failureszlib, opensslyum -y install zlib-devel openssl-develapt-get install zlib1g-dev libssl-dev
Unable to locate gmp.hGMPyum install gmp-develapt-get install libgmp-dev
Cannot find MySQL header files under /usrMySQL 客戶端庫yum install mysql-develapt-get install libmysqlclient-dev
Please reinstall the ncurses distributionncursesyum install ncurses ncurses-develapt-get install libncurses5-dev
ODBC header file 'sqlext.h' not foundunixODBCyum install unixODBC-develapt-get install unixodbc-dev
Cannot find pspellaspellyum install aspell-develapt-get install libaspell-dev
mcrypt.h not foundlibmcryptyum install libmcrypt libmcrypt-develapt-get install libmcrypt-dev
snmp.h not foundnet-snmpyum install net-snmp net-snmp-develapt-get install libsnmp-dev
/usr/bin/ld: cannot find -lltdllibtoolyum install libtool-ltdl-develapt-get install libltdl-dev

二、 phpize 擴展編譯常見問題

1. Cannot find autoconf

# CentOS
yum install autoconf
# Ubuntu
apt-get install autoconf

2. Cannot find config.m4

必須在擴展源碼根目錄執行 phpize。若為自建擴展,先用 ./ext_skel --extname=your_ext 生成骨架,再修改 config.m4 取消註解 PHP_ARG_WITH 或 PHP_ARG_ENABLE 區塊。

三、 一鍵安裝常用建構依賴(CentOS 7/8)

yum -y install gcc gcc-c++ make autoconf automake libtool \
libxml2-devel openssl-devel curl-devel libjpeg-devel libpng-devel \
freetype-devel libmcrypt-devel libxslt-devel libzip-devel \
oniguruma-devel sqlite-devel bzip2-devel readline-devel \
libicu-devel gmp-devel mysql-devel postgresql-devel

四、 一鍵安裝常用建構依賴

apt-get update && apt-get install -y build-essential autoconf automake libtool \
libxml2-dev libssl-dev libcurl4-gnutls-dev libjpeg-dev libpng-dev \
libfreetype6-dev libmcrypt-dev libxslt-dev libzip-dev \
libonig-dev libsqlite3-dev libbz2-dev libreadline-dev \
libicu-dev libgmp-dev libmysqlclient-dev libpq-dev

五、 編譯參數建議

./configure \
--prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/etc \
--enable-fpm \
--with-fpm-user=www \
--with-fpm-group=www \
--enable-mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-iconv-dir \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-libxml-dir \
--enable-xml \
--disable-rpath \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--with-curl \
--enable-mbregex \
--enable-mbstring \
--enable-intl \
--enable-pcntl \
--enable-ftp \
--with-gd \
--with-openssl \
--with-mhash \
--enable-zip \
--enable-soap \
--enable-opcache \
--with-pcre-jit \
--with-sodium \
--with-password-argon2 \
--with-ffi

根據實際需求增減模組(如 --with-ldap, --enable-sockets 等)。

結語

編譯安裝的核心原則:錯誤訊息直接指向缺少的 -devel/dev 套件。養成「看錯誤 → 裝套件 → 重試」的肌肉記憶,配合上述對照表,大多數環境可在 10 分鐘內解決所有依賴問題。生產環境強烈建議使用官方預編譯套件或 Docker 映像,減少維護成本。

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