Swoole 常见问题
- 本文不针对 pecl 安装的 swoole,建议也不要使用这个方式安装,因为这种方式安装的 swoole 无法自定义编译选项
- 一个稳定的 PHP5 版本,虽然已经支持 PHP7 了,但似乎还有暗坑,建议使用 PHP5.6
- 一个稳定的 swoole 版本,使用带有 stable 的版本,由于 swoole 还在不断完善中,每个版本都会有 bug 的解决,所以请使用 2.0 以下的最新 stable 版本
Swoole 扩展编译失败,如何解决
- 某些依赖未安装,如 openssl, libcompress 之类,按提示安装就好,swoole 提示可能不会很明显
- 权限问题,swoole 源码目录不要使用 windows 挂载的目录
如何查看是否已经安装成功
// 通常情况下,编译安装成功,swoole.so 会添加到默认扩展目录下,目录查看/php-path/bin/php-config --extension-dir
// 此命令会输出 swoole 版本及默认配置,如果没有输出或者报错,则说明扩展仅仅编译成功,未启用
php --ri swoole
// 某些情况下,你的 php-fpm和php-cli使用的不是同一个php.ini// php-fpm 查看php.ini配置路径,请使用phpinfo函数// php-cli 查看 php.ini 配置路径
php --ini|grep "Loaded"// 输出的路径如果和phpinfo中的路径一致,则表示使用的同一个php.ini,反之则不是,启用扩展时请选择正确的配置文件
扩展已经安装成功,但运行提示 'xxx' class not found
// 前提是你扩展安装并启用成功,也就是说你是通过命令行运行的文件
php filename.php
// 命令行下 swoole 已经启用
php --ri swoole
// 在输出注意输出中有一项 use_namespace,如果此项为1,则需要使用命令空间// swoole_server => \Swoole\Server// 在确认扩展启用无误的情况下,class not found 都是这个原因造成的
服务端已经启动,客户端连接不上
- 请检查防火墙规则
- 如果使用的虚拟机,请检查端口映射是否已经添加
提示 SWOOLE_SSL 常量未定义
// 查看swoole编译选项 openssl 是否为 enable状态
php --ri swoole