swoole 安装避坑指南
swoole简介:
PHP的协程高性能网络通信引擎,使用C/C++语言编写,提供了PHP语言的异步多线程服务器,异步TCP/UDP网络客户端,异步MySQL,异步Redis,数据库连接池,AsyncTask,消息队列,毫秒定时器,异步文件读写,异步DNS查询。 Swoole内置了Http/WebSocket服务器端/客户端、Http2.0服务器端/客户端。
1、 根据对应的php版本下载相应的swoole扩展
2、 安装相关依赖
3、 本次安装采用编译安装
4、 环境:php版本5.6 centos7.3
坑1: “Starting php-fpm: [28-Apr-2017 14:40:12] NOTICE: PHP message: PHP Warning: PHP Startup: Unable to load dynamic library ‘/usr/lib64/php/modules/swoole.so’ - libhiredis.so.0.13: cannot open shared object file: No such file or directory in Unknown on line 0” ---------- 最后在swoole的wiki评论中找到了解决方案: 就是在指定编译参数的时候带上redis库的路径 ./configure --enable-async-redis=/usr/local 即可 .
坑1.4: “Enable http2 support, require nghttp2 library” 支持htppd2 协议 故先下载httpd2 的包 --------wget https://github.com/nghttp2/nghttp2/releases/download/v1.30.0/nghttp2-1.30.0.tar.bz2 tar -jxvf nghttp2-1.30.0.tar.bz2 cd nghttp2-1.30.0 ./configure make && make install.
坑2、 “libphpx.so: cannot open shared object file: No such file or directory” - 检查系统lib目录中是否存在libphpx.so,包括/lib、/usr/lib、/usr/local/lib等位置 检查/usr/local/lib目录是否加入了ld.so.conf中,位置在/etc/ld.so.conf或者/etc/ld.so.conf.d/* 执行sudo ldconfig.
坑3 “Unable to load dynamic library ‘/usr/lib64/php/modules/swoole.so’ - /usr/lib64/php/modules/swoole.so: undefined symbol: php_sockets_le_socket in Unknown on line 0” ----- swoole.so 这个扩展依赖 sockets.so 这个扩展 所以先在/etc/php.ini 文件中 加入 extension = websocks.so 放在 swoole.so 前面*