FrankenPHP在Rocky Linux 9上不能直接dnf安装,需确保PHP≥8.2、启用php-fpm与opcache、安装php-opcache及openssl-devel等开发依赖,并验证php-config路径和zlib/curl扩展已加载。

FrankenPHP 在 Rocky Linux 9 上不能靠 dnf install 直接装,它依赖 PHP 8.2+(推荐 8.3)、libcurl、openssl、zlib、pcre2、oniguruma、libxml2 等开发头文件,且必须启用 php-fpm SAPI 和 opcache 扩展——这些在默认 PHP 包里不全,尤其 opcache 在某些 dnf 源中是独立子包,容易漏装。
确认 PHP 版本与 FPM 是否就绪
FrankenPHP 要求 PHP 编译时启用 --enable-fpm 和 --enable-opcache,且运行时 opcache.so 必须加载。Rocky Linux 9 默认仓库的 php 包虽含 FPM,但 opcache 是单独安装的:
- 运行
php -v确认版本 ≥ 8.2;若低于该版本,需源码编译或换用 Remi 仓库 - 检查
php -m | grep opcache,无输出说明未启用;执行dnf install php-opcache -y并确认/etc/php.d/10-opcache.ini存在且未被注释 - 验证 FPM 可用:
systemctl is-active php-fpm应返回active,否则运行systemctl enable --now php-fpm
安装 FrankenPHP 必需的系统级开发依赖
FrankenPHP 自身不编译 PHP,但它在启动时会调用 PHP 的嵌入式 SAPI(libphp.so),因此构建环境必须提供完整的 PHP 开发头和链接库。仅安装 php-devel 不够,还需底层 C 库开发包:
dnf install -y php-devel openssl-devel libcurl-devel zlib-devel pcre2-devel oniguruma-devel libxml2-devel sqlite-devel- 特别注意:
oniguruma-devel在 Rocky 9 默认源中版本偏低(如 6.9.6),若后续编译 FrankenPHP 报oniguruma.h: No such file,需手动安装更新版:wget https://dl.rockylinux.org/pub/rocky/9/devel/x86_64/os/Packages/o/oniguruma-devel-6.9.6-1.el9.6.x86_64.rpm→dnf install -y oniguruma-devel-6.9.6-1.el9.6.x86_64.rpm - 确保
pkgconf已安装(dnf install -y pkgconf),FrankenPHP 的build.sh依赖它探测 PHP 配置
验证 PHP 配置是否满足 FrankenPHP 构建条件
FrankenPHP 的构建脚本(build.sh 或 cargo build)会调用 php-config 获取头文件路径、库路径和编译标志。若 php-config 不可用或输出异常,构建必败:
立即学习“PHP免费学习笔记(深入)”;
- 运行
which php-config,应返回类似/usr/bin/php-config;若为空,说明php-devel未装或 PHP 是源码安装但未把php-config加入 PATH - 执行
php-config --includes,输出应含-I/usr/include/php类路径;若报错或路径不存在,需检查 PHP 安装完整性 - FrankenPHP 要求 PHP 启用
zlib和curl扩展(非仅开发包),运行php -m | grep -E "^(zlib|curl)$"确认两者均在列表中
FrankenPHP 对 PHP 的依赖不是“能跑就行”,而是“编译时头全、运行时扩展齐、配置里路径对”。最容易卡在 php-config 找不到正确 include 路径,或 opcache 没启用导致启动后 HTTP 请求直接 500 —— 这些问题不会在构建阶段报错,而是在首次请求时才暴露。



















