结论:仅用 yum install oniguruma 不够,必须安装 oniguruma-devel(RHEL/CentOS)或 libonig-dev(Debian/Ubuntu),因为 PHP configure 依赖 pkg-config 查找 oniguruma.pc 文件,该文件仅随开发包提供;运行时库包不含 .pc 文件,会导致“No package 'oniguruma' found”错误。

直接说结论:用 yum 或 apt 安装 oniguruma-devel(RHEL/CentOS)或 libonig-dev(Debian/Ubuntu)即可解决,但必须确认包名、源可用性及开发包是否安装到位——光装运行时库没用。
为什么 yum install oniguruma 不够?
PHP configure 脚本依赖 pkg-config 查找 oniguruma.pc 文件,该文件只随 -devel(RHEL系)或 -dev(Debian系)包一起安装。仅装 oniguruma 运行时包,pkg-config --modversion oniguruma 会失败,configure 仍报 No package 'oniguruma' found。
- CentOS 7/8:默认源不含
oniguruma-devel,需先启用 EPEL - CentOS 8+:部分版本已内置,但需确认是否含
-devel后缀包 - Ubuntu 20.04+:包名是
libonig-dev,不是oniguruma-dev或liboniguruma-dev
各系统正确安装命令
执行前请先更新本地包索引:
- CentOS 7:
yum install epel-release && yum install oniguruma-devel - CentOS 8+:
dnf install oniguruma-devel(若提示未找到,尝试dnf search onig确认实际包名) - Ubuntu/Debian:
apt-get update && apt-get install libonig-dev - 验证是否生效:
pkg-config --modversion oniguruma应输出类似6.9.8
常见失败原因和绕过方式
即使装了 -devel 包,configure 仍失败,大概率是 pkg-config 没扫到 .pc 文件:
立即学习“PHP免费学习笔记(深入)”;
-
find /usr -name "oniguruma.pc" 2>/dev/null查路径,常见位置:/usr/lib64/pkgconfig/oniguruma.pc或/usr/lib/x86_64-linux-gnu/pkgconfig/oniguruma.pc - 若路径不在默认搜索范围,临时设置:
export PKG_CONFIG_PATH="/usr/lib64/pkgconfig:$PKG_CONFIG_PATH"(CentOS)或export PKG_CONFIG_PATH="/usr/lib/x86_64-linux-gnu/pkgconfig:$PKG_CONFIG_PATH"(Ubuntu) - 不要跳过
-devel直接编译 oniguruma 源码——除非你明确需要特定版本,否则纯属增加出错路径
不装 oniguruma 的替代方案
如果你不需要 mbstring 的正则功能(比如不用 mb_ereg 系列函数),最轻量解法是关掉它:
- 在 configure 参数中加入:
--disable-mbregex - 必须与
--enable-mbstring同时出现,否则--disable-mbregex无效 - 这样 PHP 就完全绕过 oniguruma 依赖,无需任何额外库
真正容易被忽略的是:很多用户手动编译 oniguruma 时用了 --prefix=/usr/local,却忘了把 /usr/local/lib/pkgconfig 加进 PKG_CONFIG_PATH,导致 configure 始终找不到它——哪怕 make install 成功了也白搭。



















