pecl 安装 swoole 后编译 swoole_async 提示找不到 php_swoole.h 头文件的坑 

swoole 这个扩展可以说是让php 焕发了第二春,打破了我对php 的一贯“慢”的看法。

有兴趣的朋友可以去swoole.com 看看文档,这里不赘述。

swoole 安装最原始的方法就是下载源码编译安装,和其他的php 扩展一样。不过,我现在越来越懒,比较喜欢通过 PEAR 安装扩展。 e.g. pecl install swoole

不过,从swoole 4.3.0 版本开始,开发团队对swoole 进行了切割,把异步组件的模块单独放入了一个项目 swoole_async.

毕竟我也知道,同步写法+协程 才是swoole 的核心。异步的模块用的人不多,毕竟不是每个人都习惯 nodejs 的 callback hell 写法的……

那么如果你在以后的版本上要使用到异步的组件的话,就得自己在格外安装一下 swoole_async module.

很遗憾的是,至少到目前为止,开发团队还没有把它提交到 PEAR 仓库,也就是说你只能下载源码,自己编译安装了。

这本来没啥,我就下载了,但是问题出现了,make 的时候提示找不到 "php_swoole.h" 头文件。

我仔细查看了相关目录,/usr/include/php/ext/swoole ,确实没有这个文件。

后来我才发现原因,因为我的swoole 是 通过 PEAR 安装和升级的。难道pecl 没有帮我自动安装相关的头文件?

我手动下载了swoole 的源码包,编译安装了一下,果然在我 make install 的时候已经告诉我 头相关的文件已经被写入了系统指定目录下面。

ldconfig -v,刷新LIB库.

再去 swoole_async 目录下尝试 make,果然这个错误消失了……

成功了编译出了 swoole_async.so 链接库。

我日,这就坑了,本来想省事,直接 PEAR 装,现在为了异步模块还得走回头路。PEAR 是tmd 真的坑!!!!

评论