安装php-amqplib(RabbitMQ的phpAPI)

复制代码
历史经验告诉我们,装逼没有好下场总结一下之前composer安装php-amqplib包失败的原因:

composer安装的时候需要指定PHP执行文件的位置:
   PHP安装路径:/usr/local/php/bin/
   composer 指定的PHP路径:/usr/local/bin/
因为composer指定的位置不是php的安装位置,因此我在/usr/local/bin下建立了php执行文件的硬连接!!! 这个创建的硬连接就是给自己挖的坑,如果创建的是软连接就不会如此麻烦。 因为这个硬连接是我在安装composer之前建立的。后来用composer安装amqplib包时提示缺少ext-bcmath扩展,所以我重新编译了php。

这样做的结果是重新编译的php和之前创建的硬连接php完全没有关系了,重新编译生成的php是一个新的inode,所以,这两个是完全不同的两个文件。
新编译的php中含有bcmath,原来的位于/usr/local/bin/下的php中则不含bcmath。 而composer指定的位置是指向/usr/local/bin/的,所以每次install的时候都是调取的/usr/lcoal/bin/下的php,因此就总是报缺少bcmath的信息。

如果之前不把bcmath编译到php内核中,而是编译成单独的bcmath.so文件,也不会出这样的问题。

装逼遭雷劈!
复制代码

 

=============================以下是教训===================================

1.安装bcmath扩展

--enable-bcmath

2.在项目根目录创建composer.json:

{
   "require":{
                  "php-amqplib/php-amqblib":"2.6.*"
              }
}

3.# composer install

 

执行composer install 之后仍然提示bcmath扩展没有在系统中

在phpinfo中查看到bcmath已经成功加载,并编写了php脚本调用bcmath提供的函数,也正常运行

------------------------------以上方法在本人系统上失败(centos 7 minimal)-----------------------------------

尝试通过编译的方法来添加库

1.从下载的php源文件包中拷贝bcmath源文件

# cp -R php/ext/bcmath  usr/local/php/include/php/ext

2.执行phpize(usr/local/php/bin),提示需要autoconf支持

3.安装autoconf

# yum install autoconf

4.重新执行phpize,自动生成了configure文件

# ./configure --with-php-config=/usr/local/php/bin/php-config

# make && make install

编译好的bcmath.so文件保存在/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/下

5.编辑php.ini

添加zend_extension=cal/php/lib/php/extensions/no-debug-non-zts-20131226/bcmath.so

6.重启php-fpm

# systemctl restart php-fpm

7.再次运行composer

# composer install

 

 

 

!!!!仍然提示需要bcmath扩展!!!!!完败!

 

posted @   MysticGrrrr  阅读(1436)  评论(0编辑  收藏  举报
编辑推荐:
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
阅读排行:
· C# 13 中的新增功能实操
· Vue3封装支持Base64导出的电子签名组件
· 万字长文详解Text-to-SQL
· Ollama本地部署大模型总结
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(4)
点击右上角即可分享
微信分享提示