核心配置选项概述
PHP 的 configure 脚本提供了丰富的编译选项,用于在类 Unix 环境下定制 PHP 的构建。这些选项仅在编译时生效,运行时配置需通过 php.ini 文件调整。
要查看所有可用选项,可在 PHP 源代码目录中运行:
./configure --help
以下是对常用配置选项的分类详解。
安装目录配置
这些选项控制 PHP 及其相关文件的安装路径。
--prefix=PREFIX:安装架构无关文件的根目录,默认为/usr/local。--exec-prefix=EPREFIX:安装架构相关文件的目录,默认为PREFIX。--bindir=DIR:用户可执行文件目录,默认为EPREFIX/bin。--libdir=DIR:库文件目录,默认为EPREFIX/lib。在 64 位系统上,可能需要指定为--with-libdir=lib64。--sysconfdir=DIR:只读的单机配置文件目录,默认为PREFIX/etc。
SAPI(服务器 API)模块
SAPI 定义了 PHP 与外部环境的交互方式。
常用 SAPI 选项
--enable-fpm:构建 PHP-FPM(FastCGI 进程管理器),适用于 Nginx 等 Web 服务器。--with-fpm-user=USER:设置 php-fpm 运行用户,默认为nobody。--with-fpm-group=GRP:设置 php-fpm 运行组,默认为nobody。--with-fpm-systemd:启用 systemd 集成。--with-apxs2=FILE:构建 Apache 2.0 共享模块。需指定apxs工具的路径。--disable-cli:禁用 CLI(命令行界面)版本的构建。--disable-cgi:禁用 CGI 版本的构建。自 PHP 5.3.0 起,此选项会启用 FastCGI。
常规设置
--enable-debug:启用调试符号,便于问题排查。--with-config-file-path=PATH:设置php.ini的搜索路径,默认为PREFIX/lib。--with-config-file-scan-dir=PATH:设置额外配置文件扫描目录。--disable-short-tags:默认禁用短标签<?,推荐启用以提高代码可移植性。--enable-opcache:启用 Zend OPcache 字节码缓存,强烈建议在生产环境中启用。
扩展模块配置
PHP 扩展可以静态编译或构建为共享模块(.so 文件)。使用 =shared 后缀可构建为共享扩展。
常用扩展选项示例
--with-mysqli=mysqlnd
--with-pdo-mysql=mysqlnd
--with-openssl
--with-zlib
--enable-mbstring
--enable-bcmath
--enable-calendar
--enable-ftp
--with-curl
--with-gd
--enable-exif
--enable-intl
--with-xsl
--enable-zip
关键说明
- MySQL 驱动:推荐使用
mysqlnd(MySQL Native Driver),它通常内置于 PHP 源码中,无需外部库。--with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd - GD 库:如需图像处理功能,需启用 GD 并指定相关库路径。
--with-gd --with-freetype --with-jpeg --with-png - 共享扩展:若希望扩展能单独启用/禁用,可构建为共享模块。
--with-zlib=shared
编译优化与线程安全
--enable-maintainer-zts:启用线程安全(ZTS)。仅当您需要将 PHP 嵌入到多线程应用(如某些 Apache MPM 模式)或构建线程安全的扩展时才需启用。 大多数 CLI 或 FPM 环境无需此选项。--disable-inline-optimization:如果编译zend_execute.lo失败,可尝试此选项。
环境变量
编译时可通过环境变量传递参数给工具链:
CFLAGS:C 编译器标志,如优化级别-O2。CPPFLAGS:预处理器标志,如指定头文件路径-I/usr/local/include。LDFLAGS:链接器标志,如指定库路径-L/usr/local/lib。
典型编译配置示例
以下是一个适用于生产环境 PHP 7.4+ 的通用配置示例,包含常用扩展并启用了 OPcache:
./configure
--prefix=/usr/local/php
--with-config-file-path=/usr/local/php/etc
--enable-fpm
--with-fpm-user=www-data
--with-fpm-group=www-data
--enable-opcache
--with-mysqli=mysqlnd
--with-pdo-mysql=mysqlnd
--with-openssl
--with-zlib
--enable-mbstring
--enable-bcmath
--with-curl
--with-gd
--with-jpeg
--with-freetype
--enable-exif
--with-zip
CFLAGS="-O2"
注意:实际配置应根据服务器已安装的库和项目需求进行调整。编译前请确保已安装所有必要的开发包(如 libxml2-dev、libssl-dev 等)。