编译 PHP 需要的环境包,根据操作系统不同,可以分为两类:通用的基础工具链和各类扩展功能依赖库。
我把常用 Linux 发行版的依赖安装命令整理了一下,可以参考:
💻 各发行版依赖清单
| 依赖类型 | Ubuntu/Debian | CentOS/RHEL | Alpine Linux |
|---|---|---|---|
| 基础工具链 | sudo apt install build-essential autoconf automake bison re2c pkg-config libtool | sudo yum groupinstall "Development Tools"sudo yum install autoconf automake bison re2c libtool pkgconfig | apk add build-base autoconf automake bison re2c libtool pkgconf |
| 核心依赖库 | libxml2-devlibssl-devsqlite3-devlibcurl4-openssl-devlibzip-devlibonig-dev | libxml2-developenssl-devellibsqlite3x-devellibcurl-devellibzip-develoniguruma-devel | libxml2-devopenssl-devsqlite-devcurl-devzip-devoniguruma-dev |
| 图形库 (GD) | libjpeg-devlibpng-devlibfreetype6-devlibwebp-dev | libjpeg-devellibpng-develfreetype-devellibwebp-devel | libjpeg-turbo-devlibpng-devfreetype-devlibwebp-dev |
| 数据库及其他 | libmysqlclient-devlibpq-devlibicu-devlibxslt1-devlibldap2-devlibbz2-devlibgmp-dev | mysql-develpostgresql-devellibicu-devellibxslt-developenldap-develbzip2-develgmp-devel | mariadb-devpostgresql-devicu-devlibxslt-devopenldap-devbzip2-devgmp-dev |
📝 各依赖说明
-
基础工具链
build-essential/Development Tools:这是一个元包,会安装gcc、g++和make等编译 PHP 必需的 C 语言工具链。autoconf,automake,bison,re2c:用于生成和配置 PHP 的构建系统。pkg-config:一个帮助configure脚本找到所需库文件的工具。
-
核心依赖库
libxml2-dev:几乎所有 PHP 环境都必须安装。它为 SimpleXML、DOM 等 XML 相关扩展提供了基础支持。libssl-dev:为openssl扩展提供支持,这是实现 HTTPS 和安全的网络通信所必需的。sqlite3-dev:为sqlite3扩展提供支持。libcurl4-openssl-dev/libcurl-devel:让 PHP 可以使用 cURL 功能与各种网络服务器进行交互。libzip-dev/libzip-devel:为zip扩展提供支持,用于创建和修改 Zip 压缩文件。libonig-dev/oniguruma-devel:正则表达式处理库mbstring(多字节字符串)扩展的依赖。
-
图形库 (GD库,用于图像处理)
- 如果需要在 PHP 中处理图像(如生成验证码、裁剪图片等),需要为 GD 库安装一系列依赖,包括
libjpeg,libpng,libfreetype等。部分环境可能还需要libwebp来支持 WebP 格式。
- 如果需要在 PHP 中处理图像(如生成验证码、裁剪图片等),需要为 GD 库安装一系列依赖,包括
💡 一些补充说明
-
Alpine Linux 的特别提醒
- Alpine 为了极致轻量化,使用了 musl libc 替代标准的 glibc。这意味着你不能简单复制 Ubuntu 的二进制包到 Alpine 上使用,部分 PHP 扩展(如 Swoole)需要重新编译才能兼容。
- 编译时请使用
apk add命令安装带-dev后缀的开发包,并可能需要额外安装g++等工具。
-
编译动态扩展 (PECL 或第三方扩展)
- 如果你打算通过
pecl install或源码方式安装 PHP 扩展,必须提前安装对应 PHP 版本的开发包。它提供了phpize和php-config等必要的构建工具。 - Ubuntu/Debian:
sudo apt install php-dev或php-all-dev(版本无关的元包)。 - CentOS/RHEL:
sudo yum install php-devel(安装后会提供phpize工具)。 - Alpine:
apk add php-dev(注意版本,如 php8-dev)。
- 如果你打算通过
-
编译扩展时的特定依赖
- 有些扩展还有自己特殊的依赖需求。
- Xdebug: 通常不需要额外依赖,但需要
php-dev来提供phpize工具。 - Redis: 需要
php-dev,但通常不需要额外库。 - ImageMagick (imagick): 需要先安装
imagemagick-devel(CentOS) 或libmagickwand-dev(Ubuntu) 库。 - Event / Libevent: 需要安装
libevent-dev开发包。
- Xdebug: 通常不需要额外依赖,但需要
- 有些扩展还有自己特殊的依赖需求。
编译时如果 ./configure 报错说缺少某个库,根据提示搜索对应的 -dev 或 -devel 包安装即可。