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

PHP 編譯安裝常用 configure 參數詳解與範例

     編輯:PHP 相關知識

從原始碼編譯 PHP 可精準控制功能模組、優化效能並解決相依性問題。本文整理 PHP 4.3/4.4 時代的經典 configure 參數,解析核心模組用途,並提供現代 PHP 7/8 編譯的對應參數對照,協助建構符合專案需求的 PHP 執行環境。

經典範例解析(PHP 4.3.11 / 4.4.0)

參數用途範例值備註
--prefix安裝根目錄/usr/local/php所有檔案將安裝於此下的 bin、lib、include 等子目錄
--with-apxs / --with-apxs2啟用 Apache 模組 (DSO)/usr/local/apache/bin/apxs指定 apxs 路徑,編譯出 libphp4.so / libphp7.so 載入 Apache
--with-mysqlMySQL 原生驅動/usr/local/mysqlPHP 5.5+ 棄用,改用 --with-mysqli、--with-pdo-mysql
--with-gdGD 圖形庫支援(無需路徑)需系統安裝 libgd、libpng、libjpeg、freetype 開發套件
--with-freetype-dirFreeType 字體庫路徑/usr/localGD 使用 TTF 字體繪圖必備
--with-jpeg-dir / --with-png-dirJPEG/PNG 庫路徑/usr/localGD 處理對應圖片格式必備
--with-zlib / --with-zlib-dirzlib 壓縮庫/usr支援 gzip 輸出、壓縮串流
--enable-mbstring多位元組字串處理(無參數)處理 UTF-8 等多位元組編碼核心功能,現代 PHP 建議必開
--with-iconv / --with-iconv-dir字元編碼轉換/usr/localPHP 內建函式 iconv()、mb_convert_encoding() 依賴此庫
--enable-ftpFTP 協定支援(無參數)啟用 ftp_* 系列函式
--with-curlcURL 客戶端庫/usr/localHTTP 請求神器,現代 API 串接必備
--with-ldapLDAP 目錄服務/usr/local企業級整合 Active Directory/OpenLDAP 需求
--enable-inline-optimization內聯優化(無參數)GCC 編譯器優化旗標,提升執行速度
--disable-posix停用 POSIX 函式(無參數)精簡體積,若專案未用 posix_* 可關閉
--enable-memory-limit記憶體限制(無參數)PHP 5.2+ 已內建 memory_limit ini 設定,此參數移除
--enable-zend-multibyteZend 多位元組支援(無參數)PHP 5.4+ 移除,功能併入核心
--enable-magic-quotes魔術引號(無參數)已棄用並移除 (PHP 5.4+),造成資安風險,勿使用

現代 PHP 7.4 / 8.x 編譯參數對照表

./configure \
  --prefix=/usr/local/php8 \
  --with-config-file-path=/usr/local/php8/etc \
  --with-config-file-scan-dir=/usr/local/php8/etc/conf.d \
  --enable-fpm \                    # PHP-FPM 進程管理器 (生產環境標準)
  --with-fpm-user=www \
  --with-fpm-group=www \
  --enable-mbstring \
  --enable-bcmath \                 # 高精度數學運算
  --enable-sockets \                # Socket 通訊
  --enable-pcntl \                  # 進程控制 (CLI 多進程必備)
  --enable-opcache \                # OPcache 位元碼快取 (效能關鍵)
  --with-mysqli=mysqlnd \           # MySQL 改用 mysqlnd 原生驅動
  --with-pdo-mysql=mysqlnd \
  --with-pgsql \                    # PostgreSQL
  --with-pdo-pgsql \
  --with-gd \                       # PHP 7.4: --with-gd; PHP 8.0+: --enable-gd
  --with-freetype \
  --with-jpeg \
  --with-webp \                     # WebP 圖片支援
  --with-zlib \
  --with-bz2 \
  --with-curl \
  --with-openssl \                  # OpenSSL 加密 (HTTPS、簽章必備)
  --with-readline \                 # CLI 互動模式支援
  --with-zip \                      # Zip 壓縮 (PHP 7.3+ 內建)
  --with-xsl \                      # XSLT 轉換
  --enable-intl \                   # 國際化 (ICU 庫)
  --enable-calendar \
  --enable-exif \
  --enable-ftp \
  --enable-soap \                   # SOAP 協定
  --enable-shmop \
  --enable-sysvmsg \
  --enable-sysvsem \
  --enable-sysvshm \
  --disable-debug \                 # 生產環境關閉除錯
  --disable-rpath

編譯前置作業:系統相依套件安裝

# CentOS/RHEL/Rocky/Alma
yum install -y gcc gcc-c++ make autoconf \
  libxml2-devel openssl-devel sqlite-devel \
  libcurl-devel libpng-devel libjpeg-devel \
  freetype-devel libwebp-devel oniguruma-devel \
  libzip-devel libicu-devel readline-devel \
  libxslt-devel bzip2-devel gmp-devel \
  openldap-devel postgresql-devel

# Ubuntu/Debian
apt update && apt install -y build-essential \
  libxml2-dev libssl-dev libsqlite3-dev \
  libcurl4-openssl-dev libpng-dev libjpeg-dev \
  libfreetype6-dev libwebp-dev libonig-dev \
  libzip-dev libicu-dev libreadline-dev \
  libxslt-dev libbz2-dev libgmp-dev \
  libldap2-dev libpq-dev

常見編譯錯誤與解決

錯誤訊息原因解決方案
configure: error: xml2-config not found缺 libxml2 開發套件安裝 libxml2-devel / libxml2-dev
configure: error: Cannot find OpenSSL's <evp.h>OpenSSL 開發套件缺失或路徑錯誤安裝 openssl-devel,或指定 --with-openssl-dir=/usr
configure: error: jpeglib.h not found缺 libjpeg 開發套件安裝 libjpeg-devel / libjpeg-dev
make: *** [ext/gd/gd.o] Error 1GD 相依庫版本不符或缺少 freetype確認 --with-freetype、--with-jpeg 路徑正確
undefined reference to `libiconv_open'iconv 庫連結失敗安裝 libiconv 或加入 LDFLAGS=-liconv

編譯後驗證與部署建議

  1. make test:執行官方測試套件,確認核心功能正常。
  2. php -m:檢查載入模組清單,確認需求模組皆在列。
  3. php -i | grep configure:驗證實際生效的編譯參數。
  4. 建立 php.ini:複製 php.ini-production 並調整 memory_limit、max_execution_time、opcache.enable=1 等生產參數。
  5. 設定 PHP-FPM www.conf:調整 pm.max_children、pm.start_servers 等進程池參數。

總結

理解 configure 參數含義,能依專案需求裁剪最精簡、高效的 PHP 執行環境。現代部署建議搭配 PHP-FPM + OPcache + Nginx,並透過 Ansible/Docker 將編譯流程自動化、版本化,確保環境一致性與可重現性。

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