PHP 8.0.0 正式版编译安装强制要求 OpenSSL 1.1.1 或更高版本,且必须在 configure 阶段添加--enable-opcache 参数才能为后续开启 JIT 特性奠定基础。
原因分析
JIT(即时编译)编译器是 PHP 8.0 的核心性能改进特性,其工作原理依赖于 OpCache 扩展。根据技术文档解析,JIT 的工作流程分为三个阶段:首先将 PHP 代码解析成操作码(opcode),接着编译成中间代码(IR),最后由 JIT 编译器将 IR 转换为机器码执行。如果在编译源码时未启用 OpCache,JIT 将无法运行。此外,PHP 8.0 引入了新的类型系统和运算符,对底层依赖库如 libxml2 和 sqlite3 的版本提出了更高要求,例如 libxml-2.0 必须大于等于 2.7.6 版本。
解决方案
1. 安装系统依赖与扩展
在 CentOS 7.9 或 CentOS 8 环境下,需先安装基础编译工具和依赖库。执行命令:yum -y install libxml2-devel sqlite-devel bzip2-devel libcurl-devel libpng-devel libjpeg-devel freetype-devel libicu-devel oniguruma-devel libxslt-devel。特别注意 libzip 扩展,yum 源版本可能过低,需手动编译安装 libzip-1.2.0 版本。下载地址为 https://nih.at/libzip/libzip-1.2.0.tar.gz,解压后执行./configure && make && make install,并配置环境变量 export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH。
2. 下载与配置源码
访问官网下载源码包 php-8.0.0.tar.gz,地址为 https://www.php.net/distributions/php-8.0.0.tar.gz。解压进入目录后,执行配置命令。参考编译选项如下:./configure --prefix=/usr/local/php-8.0.0 --with-config-file-path=/usr/local/php-8.0.0/etc --enable-opcache --enable-fpm --with-openssl --with-curl --with-mysqli --with-pdo-mysql。务必确保参数中包含--enable-opcache,这是启用 JIT 的前提。
3. 编译安装与 JIT 配置
执行 make && make install 完成编译。安装完成后,复制配置文件:cp php.ini-production /usr/local/php-8.0.0/etc/php.ini。要正式启用 JIT,需修改 php.ini 中的 opcache 配置项。虽然编译时开启了扩展,但具体 JIT 触发模式需在配置文件中设定。同时修改 php-fpm.conf,去掉 pid = run/php-fpm.pid 前面的分号,并设置监听端口为 listen = 127.0.0.1:9080。
注意事项
在配置编译选项过程中,用户常遇到依赖缺失报错。真实报错信息示例:configure: error: Package requirements (libxml-2.0 >= 2.7.6) were not met: No package'libxml-2.0'found,解决方法是 yum install libxml2-devel.x86_64。另一个常见错误是 configure: error: Package requirements (sqlite3 > 3.7.4) were not met: No package'sqlite3'found,需安装 sqlite-devel.x86_64。此外,若服务器无法联网,需提前下载 libmcrypt 和 libzip 源码包上传至服务器。对于 CentOS 8 用户,需注意 PHP 配置参数时有变化,不确定时可先执行./configure --help 查看提示。
参考来源
来源:Linux 源码编译安装 PHP 8.0 详细教程 - 环境准备与依赖项说明
来源:PHP 8.0 源码编译安装以及 JIT 尝鲜 - 2020 年 7 月 10 日版本记录与报错处理
来源:Linux(centos8):编译安装 php8.0 正式版并启用 jit 及 php8 安装时的报错处理 - 2021 年 12 月 27 日架构森林博客
来源:编译安装 PHP8.0 测试版开启 Opcache JIT - 2020 年 7 月 23 日 Debian 环境实践