转自:https://blog.csdn.net/ljfrocky/article/details/123362836
环境
Ubuntu Server 18.04
PHP 7.2
Swoole 4.8.7
过程
今天使用PECL的方式安装完swoole扩展后,按照官方文档指示,在php.ini文件中添加了
extension=swoole.so
1
但添加完后,执行php -m命令并没有发现有swoole扩展,说明扩展没有加载成功。
首先是怀疑加载的php.ini文件路径不正确,于是使用php --ini命令查看文件路径:
虽然配置文件路径正确,但看到有一个Warning错误:undefined symbol: json_globals
网上搜索相关资料,得知提示这个错误是因为没有加载json扩展,但json扩展PHP默认就有的,怎么可能会没有加载呢?
后来继续研究,发现PHP的ini文件是有两个目录的,除了php.ini本身以外,还有一个/etc/php/7.2/cli/conf.d目录,这个目录也存着很多ini文件:
这个目录是用来配置PHP要加载的扩展以及顺序的,通过上图可以发现,conf.d目录里的ini文件都是个软链接,链接到/etc/php/7.2/mods-available/目录,而且每个软链接前面都有一个数字,如20-curl.ini,这个数字越小,该扩展的加载优先级就越高。
PHP会优先加载php.ini里配置的扩展,然后才会加载conf.d目录里的扩展。而我的swoole是配置在php.ini文件里的,也就是说,swoole优先于json扩展加载,于是就报了上述那个undefined symbol: json_globals的错误。
为了解决这个问题,我们就不能把swoole扩展配置在php.ini里,而是把它配置在conf.d目录里。
在/etc/php/7.2/mods-available/目录里创建一个swoole.ini文件,并添加内容extension=swoole.so,最后在/etc/php/7.2/cli/conf.d创建一个软链接到swoole.ini,名称为25-swoole.ini,把数字设置成25是把swoole的加载优先级调到最后,等其它扩展都加载完了,再加载swoole:
然后再执行php --ini命令发现没有报错了,php -m命令也可以看到swoole扩展了,至此问题解决。
————————————————
版权声明:本文为CSDN博主「自由de单车」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ljfrocky/article/details/123362836
小程序支付&回调php centos Elasticsearch & LogStash & kibana安装及调试 Magento升级到2.4.3订单详情空白 nba2k23球员列表(八) nba2k23球员列表(七) nba2k23球员列表(六) nba2k23球员列表(五) nba2k23球员列表(四) nba2k23球员列表(三) nba2k23球员列表(二) nba2k23球员列表(一) nba2k22球员列表(四) nba2k22球员列表(三) nba2k22球员列表(二) nba2k22球员列表(一) NBA2K21球员大全 NBA2K20球员列表(五) NBA2K20球员列表(四) NBA2K20球员列表(三) NBA2K20球员列表(二) NBA2K20球员列表 wsl docker 突然 -v /sys/fs/cgroup:/sys/fs/cgroup:ro 无法挂载怎么办? 抽象类和接口 Magento 2 中扩展属性(extension_attributes.xml)的用途是什么? win10底部菜单栏卡死解决 docker容器映射所有端口到宿主机 【frp】RDP软件远程Listener state: Not listening [not supported] 升级到magento2.4.3,后台加载很慢解决方法 微信支付https://api.mch.weixin.qq.com/pay/unifiedorder返回null magento grid增加编辑按钮 PHP循环引用 Broken reference: the 'sales_order_tbs ' elemert canmot be atded as child to ‘left , bvcause the lat ubuntu安装swoole后报错:undefined symbol:XXXX swoole pcre.h: No such file or directory magento2 The account sign-in was incorrect or your account is disabled temporarily. Please wait and 批量修改表前缀 magento2.3.7升级2.4.3 elasticsearch可视化工具 pwaStudio-Magento2.4.3 mysql忘记密码创建新用户设置 Docker容器下 mysql source 导入数据库 如何在 Docker 上安装 Magento 2 mysql:基于扫码记录查找密接人员 varnish:pc mobile分开缓存 The requested PHP extension ext-gd * is missing from your system. Install or enable PHP's gd extensi Ubuntu切换指定PHP版本 magento-varnish安装自述 Ubuntu彻底卸载varnish Varnish - Error 503 Backend fetch failed Scandipwa magento2安装教程(在已存在的magento安装) Navicat15最新版本破解 (Navicat Premium 注册出现 No All Pattern Found! File Already Patched) mac本地运行MySQL;Navicat Authentication plugin ‘caching_sha2_password‘ cannot be loaded: dlope问题 mac本地运行PHP项目问题记录 通过 Binlog 日志来恢复 MySQL 数据 composer file could not be downloaded: SSL operation failed with code 1. OpenSSL Error messages: php Laravel统计所有API响应时长等信息 php计算累加的累加 composer PHP Fatal error: Allowed memory size of 1610612736 bytes exhausted (tried to allocate 4096 Go使用变量类型声明和方法的注意事项 方法 函数值 映射 切片的长度与容量 go基本类型(包、变量、函数、流程控制语句) 如何保证接口的幂等性 nginx 全部域名解析统一设置 mysql之存储过程(while循环、repeat循环、leave语句、loop循环、iterate语句) Laravel 契约和门面简单解读(Cache) Linux-centos安装node,node -v undefind Nginx 的反向代理、负载均衡、动静分离和高可用的原理 es6 set应用场景 vscode安装HTML Boilerplate解决不识别tpl后缀文件 laravel orm with如何指定select字段 laravel框架应用和composer扩展包开发 php实现斐波那契数列 内网穿透工具FRP搭建远程控制 微信小程序 动态添加view组件 唯物辩证法 nba2k游戏助手 更新日志 微信网页分享代码及提示签名错误解决方法 PHP支付宝支付兼容微信公众号 关于支付宝支付接口实际测试后的记录 网站后台权限管理 12306Bypass 分流软件 nba2kol2 12月份数据大更新,公众号球员更新名单进度贴 腾讯视频会员大放送 公众号新功能征集帖 我们知道CDN护航了双11十年,却不知道背后有那么多故事…… 企业微信第三方应用开发授权设置(PHP版) Linux下certpot 免费搭建https协议 CentOS7下Nginx强制http 301跳转到https的设置方法