今天安装 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

swoole安装报错详解 mysqlnd_find_charset_nr in Unknow的更多相关文章

  1. Xfire实现webservice各种报错详解

    一.No write method for property {http://vo.aa.com}new in class com.aa.vo.TA 使用xfire的ws调用时,会将对象与xml进行捆 ...

  2. Mysql报错注入之floor报错详解

    一.简述 利用 select count(*),(floor(rand(0)*2))x from table group by x,导致数据库报错,通过 concat 函数,连接注入语句与 floor ...

  3. python异常报错详解

    异常BaseException所有内置异常的基类.它不是直接由用户定义的类继承(为此使用Exception).如果 str()或者unicode()是在这个类的一个实例上被调用,返回实例的参数表示形式 ...

  4. Ant 构建 Jmeter脚本报错详解

    在搭建Ant构建Jmeter脚本的时候,小组成员遇到了各种问题. 再这里总结一下,遇到类似问题的可以做个参考 1.提示 does not exist 解决方案: 出现这种的问题原因有很多. 先排除权限 ...

  5. (转)windows 下安装配置 Nginx 详解

    windows 下安装配置 Nginx 详解 本文转自https://blog.csdn.net/kingscoming/article/details/79042874 nginx功能之一可以启动一 ...

  6. nginx在linux上的安装与配置详解(一)

    Nginx的安装与配置详解 (1)nginx简介     nginx概念: Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like ...

  7. Linux中Nginx安装与配置详解

    转载自:http://www.linuxidc.com/Linux/2016-08/134110.htm Linux中Nginx安装与配置详解(CentOS-6.5:nginx-1.5.0). 1 N ...

  8. legend3---Windows 7/8/10 系统下Laravel框架的开发环境安装及部署详解(Vagrant + Homestead)

    legend3---Windows 7/8/10 系统下Laravel框架的开发环境安装及部署详解(Vagrant + Homestead) 一.总结 一句话总结: 1.安装的话就是下载好git,va ...

  9. MySQL 8.0.20 安装教程图文详解(windows 64位)

    MySQL 8.0.20 安装教程图文详解(windows 64位)  更新时间:2020年05月09日 15:09:04   转载 作者:瘦肉粥不加糖     这篇文章主要介绍了MySQL 8.0. ...

随机推荐

  1. Winform Datagridview 单元格html格式化支持富文本

    Winform Datagridview 单元格html格式化支持富文本 示例: 源码:https://github.com/OceanAirdrop/DataGridViewHTMLCell 参考: ...

  2. python使用multiprocessing进行多进程编程(1)

    multiprocessing模块实现了对多进程编程的封装,让我们可以非常方便的使用多进程进行编程.它的使用方法非常类似threading模块. 1.创建一个进程 import multiproces ...

  3. python实现文件下载的方法总结

    前端时间遇到一个通过url下载文件的需求,只需要简单的编写一个py脚本即可.从网上搜了下python实现文件下载的方法,总结如下,备查. 以下方法均已测试,环境win8.1  python2.6/2. ...

  4. Composer安装(windows)

    https://files.cnblogs.com/files/wlphp/Composer-Setup.zip 先下载这个安装包,一直下一步 然后设置composer全局中国景象 composer ...

  5. java实现微信H5支付

    前面做了app微信支付的回调处理,现在需要做微信公众号的支付,花了一天多时间,终于折腾出来了!鉴于坑爹的微信官方没有提供Java版的demo,所以全靠自己按照同样坑爹的文档敲敲敲,所以记录下来,以供自 ...

  6. mybatis 框架 的应用之四(一对一 与 一对多)

    lf-driver=com.mysql.jdbc.Driver lf-url=jdbc:mysql://localhost:3306/test?allowMultiQueries=true&u ...

  7. c# 下实现ping 命令操作

    1>通过.net提供的类实现 using System; using System.Collections.Generic; using System.Linq; using System.Te ...

  8. js 操作table

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default4.aspx.cs ...

  9. 14.UNION 和 UNION ALL 操作符

    union all   union UNION 操作符用于合并两个或多个 SELECT 语句的结果集.请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列.列也必须拥有相似的数据类型.同 ...

  10. 如何在Django模型中管理并发性 orm select_for_update

    如何在Django模型中管理并发性 为单用户服务的桌面系统的日子已经过去了 - 网络应用程序现在正在为数百万用户提供服务,许多用户出现了广泛的新问题 - 并发问题. 在本文中,我将介绍在Django模 ...