Swoole扩展安装失败报错什么原因,该如何解决
Admin 2022-07-20 群英技术资讯 1076 次浏览
很多朋友都对“Swoole扩展安装失败报错什么原因,该如何解决”的内容比较感兴趣,对此小编整理了相关的知识分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获,那么感兴趣的朋友就继续往下看吧!
swoole扩展安装失败怎么办?swoole安装报错详解
今天通过pecl安装 swoole
pecl install swoole
步骤很简单,但是最后安装成功后发现phpinfo()中未显示swoole扩展,执行:
php -m | grep swoole
发现报错如下:
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/swoole.so' - /usr/lib64/php/modules/swoole.so: undefined symbol: mysqlnd_find_charset_nr in Unknown on line 0
仔细看报错发现这条报错是由swoole.so报出来的,说明在加载swoole.so的时候报的找不到 mysqlnd_find_charset_nr ,这是一个以 mysqlnd 打头的一个关键字,而 mysqlnd 又是 PHP 的一个扩展,通过阅读 swoole/swoole.mysql.c 的源码我们发现有如下一段:
const MYSQLND_CHARSET* cset = mysqlnd_find_charset_nr(client->connector.character_set);
if (cset == NULL)
{
swoole_php_fatal_error(E_ERROR, "unknown mysql charset[%s].", client->connector.character_set);
RETURN_FALSE;
}从上面的源码我们可以看出,原来 swoole 是需要依赖 msyqlnd 这个扩展的,我们发现 phpinfo() 里面 msyqlnd 扩展是存在的为什么还会报这个错呢。
最后发现 PHP默认加载的扩展都在 /usr/lib64/php/modules/ 这个目录里在,这里面的 .so 文件是默认加载的,关于这些扩展的配置不是在 /etc/php.ini 中,而是在 /etc/php.d/ 这个目录中,这个目录当中的所有的 .ini 文件是在 /etc/php.ini 加载完成后再加载的,而我们的 extension=swoole.so 的配置是写在 /etc/php.ini 的文件末尾,所以是先加载了 swoole.so 然后再加载 mysqlnd.so,这就导致了 swoole 找不到 mysqlnd_find_charset_nr 。
解决方法:
1、将/etc/php.d/ 目录中的mysqlnd.ini文件删除
2、在 /etc/php.ini 的 extension=swoole.so 上面一行添加 extension=mysqlnd.so
3、重新启动 php-fpm
这样可以解决问题了,同样可能还会遇到以下报错:
PHP Warning: PHP Startup: 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
解决的方法也是类似的:
1、将/etc/php.d/ 目录中的sockets.ini文件删除
2、在 /etc/php.ini 的 extension=swoole.so 上面一行添加 extension=sockets.so
3、重新启动 php-fpm
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
在thinkphp3.2中,vendor用于导入第三方类库,该方法默认的导入路径为thinkphp系统目录的Vendor目录,默认后缀是“.php”,语法为“vendor(要导入的类库, 导入的基础路径, 导入的类库后缀)”。
单例模式减少资源浪费,保证整个环境只有一个实例对象,特别适合编写资源连接类。单例模式是指只创建一个资源(对象、数据库链接等),防止外部实例+判断是否有返回或创建后返回对象。
python中import os是指导入os模块到当前程序。import语句用来导入其他python文件(称为模块module),使用该模块里定义的类、方法或者变量,从而达到代码复用的目的。
php高并发处理:1、应用程序与静态资源的分离。2、使用由应用程序生成的页面缓存。3、群集、多个服务器功能相同,主要起分流作用。4、反向代理。5、CDN。
在thinkphp中,n方法属于计数器方法,用于核心的查询、缓存统计的计数和统计,语法为“N('计数位置'[,'步进值'])”;n方法页面执行完毕后的统计结果不会带入下次统计。
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008