PHP 原始碼編譯安裝時,./configure 參數決定了最終二進位檔包含的功能模組、擴展支援與效能特性。本文整理常用編譯參數的中文說明、依賴關係與選型建議,協助依專案需求客製化 PHP 建置。
核心路徑與基礎設定
| 參數 | 說明 | 範例 |
--prefix | PHP 安裝根目錄 | --prefix=/usr/local/php |
--with-config-file-path | php.ini 搜尋路徑 | --with-config-file-path=/usr/local/php/etc |
--with-apxs2 | 整合 Apache 模組(需 Apache 啟用 mod_so) | --with-apxs2=/usr/local/apache/bin/apxs |
--with-apache | 靜態編譯為 Apache 模組(舊版用法) | --with-apache=/usr/local/apache |
資料庫擴展
| 參數 | 說明 | 備註 |
--with-mysql | MySQL 原生驅動支援 | 指定 MySQL 安裝路徑 |
--with-mysqli | MySQL Improved 擴展(支援預處理、事務) | --with-mysqli=/usr/local/mysql/bin/mysql_config |
--with-pdo-mysql | PDO MySQL 驅動 | 現代專案建議使用 PDO |
--with-mysql-sock | 指定 MySQL socket 檔案位置 | 避免連線找不到 socket |
--with-pgsql | PostgreSQL 支援 | |
--with-sqlite3 | SQLite 3 支援 | |
常用功能模組
| 參數 | 功能 | 相依套件 |
--enable-mbstring | 多位元組字串處理(中文必備) | -- |
--enable-bcmath | 高精度數學運算 | -- |
--enable-sockets | Socket 網路程式設計 | -- |
--enable-ftp | FTP 客戶端功能 | -- |
--enable-zip | ZIP 壓縮/解壓 | libzip |
--enable-calendar | 行曆轉換功能 | -- |
--enable-exif | 圖片 EXIF 資訊讀取 | -- |
--enable-soap | SOAP Web Service | libxml2 |
--enable-shmop | 共享記憶體操作 | -- |
--enable-sysvsem | System V 信號量 | -- |
--enable-sysvshm | System V 共享記憶體 | -- |
--enable-pcntl | 行程控制(fork、signal) | 僅 Unix/Linux |
--enable-inline-optimization | 編譯器優化 | GCC 支援 |
圖形處理與字型
| 參數 | 功能 | 相依套件 |
--with-gd | GD 圖形庫支援 | gd-devel |
--enable-gd-native-ttf | TrueType 字型支援 | freetype |
--with-freetype-dir | 指定 FreeType 路徑 | |
--with-jpeg-dir | JPEG 支援 | libjpeg |
--with-png-dir | PNG 支援 | libpng |
--with-xpm-dir | XPM 支援 | |
--with-webp-dir | WebP 支援 | libwebp |
加密與壓縮
| 參數 | 功能 | 相依套件 |
--with-openssl | OpenSSL 加密/SSL | openssl-devel |
--with-mhash | Mhash 雜湊演算法 | mhash |
--with-mcrypt | Mcrypt 加密演算法 | libmcrypt |
--with-zlib | Zlib 壓縮 | zlib-devel |
--with-bz2 | Bzip2 壓縮 | bzip2-devel |
--with-curl | cURL 傳輸庫 | curl-devel |
--with-curlwrappers | 使用 cURL 開啟 URL Stream | 需搭配 --with-curl |
XML 與國際化
| 參數 | 功能 | 相依套件 |
--with-libxml-dir | libxml2 XML 解析器 | libxml2-devel |
--with-xmlrpc | XML-RPC 支援 | libxml2 |
--with-xsl | XSLT 轉換 | libxslt |
--with-gettext | GNU Gettext 國際化 | gettext-devel |
--with-iconv | 字元集轉換(預設啟用) | libiconv |
CGI / FPM 部署模式專用
| 參數 | 說明 |
--enable-fpm | 啟用 PHP-FPM(需打補丁或 PHP 5.3.3+ 內建) |
--enable-fastcgi | 啟用 FastCGI 支援 |
--enable-force-cgi-redirect | 強制 CGI 重導向安全機制 |
--with-ncurses | 終端機畫面繪製庫 |
安全與除錯
| 參數 | 說明 | 建議 |
--enable-safe-mode | 安全模式(PHP 5.4 已移除) | 不建議使用 |
--disable-short-tags | 禁用短標籤 <? ?> | 建議啟用,避免 XML 衝突 |
--disable-debug | 關閉除錯模式 | 生產環境必開 |
--disable-rpath | 不嵌入執行時庫搜尋路徑 | 建議啟用 |
--enable-debug | 開啟除錯符號 | 僅開發/除錯用 |
典型編譯命令範例
./configure \
--prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/etc \
--with-apxs2=/usr/local/apache/bin/apxs \
--with-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-mysql-sock=/tmp/mysql.sock \
--enable-mbstring \
--enable-bcmath \
--enable-sockets \
--enable-ftp \
--enable-zip \
--enable-calendar \
--enable-exif \
--enable-soap \
--enable-shmop \
--enable-sysvsem \
--enable-sysvshm \
--enable-pcntl \
--enable-inline-optimization \
--with-gd \
--enable-gd-native-ttf \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-webp-dir \
--with-openssl \
--with-mhash \
--with-mcrypt \
--with-zlib \
--with-bz2 \
--with-curl \
--with-curlwrappers \
--with-libxml-dir \
--with-xmlrpc \
--with-xsl \
--with-gettext \
--disable-short-tags \
--disable-rpath \
--disable-debug \
--enable-fpm
注意事項
- mysqlnd:PHP 5.3+ 內建 MySQL Native Driver,無需外部 MySQL 庫,效能更好,建議使用
--with-mysql=mysqlnd。
- 互斥參數:指定
--with-apxs2 後,勿同時啟用 --enable-fpm、--enable-fastcgi,兩者部署模式衝突。
- 依賴安裝:編譯前務必安裝對應
-devel 套件(CentOS/RHEL)或 -dev 套件(Debian/Ubuntu)。
make && make install 前可執行 make test 驗證核心功能。
依專案實際需求裁剪編譯參數,可減少記憶體佔用、縮小攻擊面、提升效能,是 PHP 部署優化的關鍵步驟。