根本原因是系统缺少libevent-devel(CentOS/RHEL)或libevent2-dev(Debian/Ubuntu)开发包,需先卸载旧版、安装对应版本的开发包,验证/usr/include/event2/event.h存在后,再用对应PHP版本pecl重装event扩展并重启Workerman进程。

Workerman安装event扩展时提示“checking for include/event2/event.h not found”,说明编译器找不到libevent的开发头文件,根本原因是系统缺少libevent-devel(CentOS/RHEL)或libevent2-dev(Debian/Ubuntu)包,而非PHP扩展本身的问题。
确认缺失的是头文件而非运行库
执行 yum list installed | grep libevent(CentOS)或 dpkg -l | grep libevent(Ubuntu),若只显示 libevent 而无 libevent-devel 或 libevent2-dev,则证实是开发头文件包未装——运行库不能用于编译,必须单独安装开发包。
这一步操作起来很简单,直接把文件拖进去就行。
分系统安装对应开发包
方法一:CentOS/RHEL 7/8
先彻底卸载旧版残留:yum remove libevent-devel libevent
再安装正确版本:yum install libevent2-devel
【注意:libevent-devel ≠ libevent2-devel】 旧版 libevent-devel 对应 libevent 1.x,而 event 扩展强制要求 libevent 2.0+ 的头文件结构;若装错,configure 仍会报找不到 event2/event.h。
方法二:Ubuntu/Debian
apt-get update && apt-get install libevent-2.1-7 libevent-2.1-dev
不要只装 libevent-dev——它在较新发行版中已指向 libevent 1.x,必须显式指定 2.1 版本号。
验证头文件是否真正到位
执行 find /usr -name "event.h" 2>/dev/null,正常应返回类似路径:/usr/include/event2/event.h 或 /usr/include/event2/event_struct.h。
若无任何输出,说明开发包安装失败或安装路径异常;此时不要继续 pecl install,否则必然卡在 configure 阶段。
若路径存在但不在标准搜索目录(如装到了 /opt/libevent/include),则需手动指定:pecl install event --with-event-libevent-dir=/opt/libevent。
重新编译安装event扩展
第一步:清理上次失败残留
rm -rf /tmp/pear/download/event*
第二步:用对应 PHP 版本的 pecl 命令重试
/www/server/php/74/bin/pecl install event(路径按你实际 PHP 版本调整)
第三步:检查生成的 so 文件是否存在
ls -l /www/server/php/74/lib/php/extensions/no-debug-non-zts-20200930/event.so
若该文件不存在,说明编译中途失败,需回看上一步终端输出的最后 5 行错误——90% 是头文件路径问题未解决。
第四步:写入 php.ini 并重启 Workerman 进程
echo "extension=event.so" >> /www/server/php/74/etc/php.ini
【关键动作:必须停掉所有 workerman 进程再重启】 Workerman 是常驻内存进程,改完配置不重启等于没改。











