当前位置: 首页 > news >正文

php7.3安装php7.3-gmp扩展踩坑总结

环境:
容器里面为php7.3.3版本
服务器也为php7.3.3-14版本,但是因为业务量太大需要在服务器里面跑脚本
容器里面为 alpine 系统,安装各种扩展
服务器里面开发服为 ubuntu 16.04.7 LTS (Xenial Xerus) 系统
服务器线上为 ubuntu 20.04.6 LTS (Focal Fossa) 系统

发现容器里面有 php-gmp,而服务器里面没有,需要在服务器里面安装 php7.3-gmp
换源发现
阿里源 和 清华源的 ubuntu 18.04 LTS (bionic)系统为 php7.2-gmp
阿里源 和 清华源的 ubuntu 20.04 LTS (focal)系统为 php7.4-gmp

root@39:/etc/apt/sources.list.d# apt search php gmp
Sorting... Done
Full Text Search... Done
php-gmp/focal,focal 2:7.4+75 allGMP module for PHP [default]php7.4-gmp/focal-updates 7.4.3-4ubuntu2.28 amd64GMP module for PHP

无法安装 php7.3-gmp 扩展,然后直接查看阿里源的ubuntu系统确定没有 php7.3-gmp,安装 debian 的包也不支持
在这里插入图片描述

通过ppa仓库进行安装,然后发现开发服安装 ppa仓库之后还是没有该包

add-apt-repository ppa:ondrej/php
或如下建议
LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php
回车

这样就安装好了 ppa 仓库
这里是开发服执行
相当于如下配置

www-data@39:~$ cat /etc/apt/sources.list.d/ondrej-ubuntu-php-xenial.list 
deb http://ppa.launchpad.net/ondrej/php/ubuntu xenial main
# deb-src http://ppa.launchpad.net/ondrej/php/ubuntu xenial main

然后发现没有 php7.3-gmp
严重踩坑
弄错很久一直没安装成功在网上找到了说是7.3版本的 gmp.so
然后下载下来复制带对应的路径,这里是/usr/lib/php/20180731/gmp.so
然后编写配置文件启动才成功找到

root@server:/etc/apt# cat /etc/php/7.3/cli/conf.d/20-gmp.ini
; configuration for php gmp module
; priority=20
extension=gmp.so

php -m | grep gmp 验证,还不确定能不能使用
如果不知道 gmp.so 是复制到哪里,php -m | grep gmp 会显示哪个目录缺少该文件,直接复制过去即可
因为 dpkg -l | grep gmp 并没有发现安装了该包

后面新开虚拟机 和 线上服务器系统一样为 ubuntu 20.04.6 LTS (Focal Fossa) 系统
重新通过添加 ppa 仓库进行安装

LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php
回车
安装完毕之后可查看
root@server:/etc/apt# cat /etc/apt/sources.list.d/ondrej-ubuntu-php-focal.list 
deb http://ppa.launchpad.net/ondrej/php/ubuntu focal main
# deb-src http://ppa.launchpad.net/ondrej/php/ubuntu focal main## 发现是版本不一样,安装的 ppa 仓库也不一样
## 该ppa仓库存在各种包使用,可直接进行安装
root@server:/etc/apt# apt search php gmp
Sorting... Done
Full Text Search... Done
php-gmp/focal 2:8.3+95+ubuntu20.04.1+deb.sury.org+1 allGMP module for PHP [default]php5.6-gmp/focal 5.6.40-81+ubuntu20.04.1+deb.sury.org+1 amd64GMP module for PHPphp7.0-gmp/focal 7.0.33-79+ubuntu20.04.1+deb.sury.org+1 amd64GMP module for PHPphp7.1-gmp/focal 7.1.33-65+ubuntu20.04.1+deb.sury.org+1 amd64GMP module for PHPphp7.2-gmp/focal 7.2.34-54+ubuntu20.04.1+deb.sury.org+1 amd64GMP module for PHPphp7.3-gmp/focal,now 7.3.33-24+ubuntu20.04.1+deb.sury.org+1 amd64 [installed]GMP module for PHPphp7.4-gmp/focal 1:7.4.33-18+ubuntu20.04.1+deb.sury.org+1 amd64GMP module for PHPphp8.0-gmp/focal 1:8.0.30-12+ubuntu20.04.1+deb.sury.org+1 amd64GMP module for PHPphp8.1-gmp/focal 8.1.31-1+ubuntu20.04.1+deb.sury.org+1 amd64GMP module for PHPphp8.2-gmp/focal 8.2.27-1+ubuntu20.04.1+deb.sury.org+1 amd64GMP module for PHPphp8.3-gmp/focal 8.3.16-1+ubuntu20.04.1+deb.sury.org+1 amd64GMP module for PHPphp8.4-gmp/focal 8.4.3-1+ubuntu20.04.1+deb.sury.org+1 amd64GMP module for PHP

直接如下安装即可

apt-get install php7.3-gmp

安装完成验证

root@server:/etc/apt#  ll /etc/php/7.3/cli/conf.d/20-gmp.ini
lrwxrwxrwx 1 root root 35 Feb  5 08:43 /etc/php/7.3/cli/conf.d/20-gmp.ini -> /etc/php/7.3/mods-available/gmp.iniroot@server:/etc/apt# cat /etc/php/7.3/cli/conf.d/20-gmp.ini
; configuration for php gmp module
; priority=20
extension=gmp.soroot@server:/etc/apt# php -m | grep gmp
gmproot@server:/etc/apt# dpkg -l | grep gmp
ii  libgmp10:amd64                        2:6.2.0+dfsg-4ubuntu0.1                 amd64        Multiprecision arithmetic library
ii  php7.3-gmp                            7.3.33-24+ubuntu20.04.1+deb.sury.org+1  amd64        GMP module for PHP## ii为已经安装,验证安装成功

总结: 添加ppa仓库会根据服务器本身的版本系统,可以灵活进行添加
更改/etc/apt/sources.list.d/ondrej-ubuntu-php-focal.list 仓库对应的配置
然后 apt update 更新即可
这里踩坑严重,使用了 ubuntu 16 版本的ppa一直找不到扩展
如果开发服也想安装,直接复制虚拟机或者线上的 ppa 的仓库地址到开发服修改更新即可

参考命令如下

php -v
php --ini
LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php
apt update
apt search php gmp
apt install php7.3-gmp
dpkg -l | grep gmp
php -m | grep gmp
find / -name "gmp.so"  发现是 /usr/lib/php/20180731/gmp.so

之后只要通过ubuntu安装php及其扩展,都可以考虑使用 ppa 仓库进行安装
不过建议ubuntu系统最低为 ubuntu 16 版本,否则需要手动更改高版本仓库的 ppa 仓库

http://www.lryc.cn/news/532128.html

相关文章:

  • 7. k8s二进制集群之Kube ApiServer部署
  • QT笔记——多语言翻译
  • 【2025】camunda API接口介绍以及REST接口使用(3)
  • js面试some和every的区别
  • Vue 中如何嵌入可浮动的第三方网页窗口(附Demo)
  • 【大数据技术】词频统计样例(hadoop+mapreduce+yarn)
  • java进阶知识点
  • 深度学习系列--02.损失函数
  • 构建一个数据分析Agent:提升分析效率的实践
  • 在K8S中,如何把某个worker节点设置为不可调度?
  • 硬件电路基础
  • 5 前端系统开发:Vue2、Vue3框架(上):Vue入门式开发和Ajax技术
  • 阿里 Java 岗个人面经分享(技术三面 + 技术 HR 面):Java 基础 +Spring+JVM+ 并发编程 + 算法 + 缓存
  • vue2-给data动态添加属性
  • Linux 文件和目录
  • 【大数据技术】本机DataGrip远程连接虚拟机MySQL/Hive
  • Leetcode 3440. Reschedule Meetings for Maximum Free Time II
  • 专门记录台式电脑常见问题
  • [操作系统] 进程终止
  • [x86 ubuntu22.04]进入S4失败
  • 12.外观模式(Facade Pattern)
  • ES6 入门教程:箭头函数、解构赋值及其他新特性详解
  • win编译openssl
  • 51单片机看门狗系统
  • 探索 paraphrase-MiniLM-L6-v2 模型在自然语言处理中的应用
  • 2025最新软件测试面试大全(附答案+文档)
  • Java语法进阶
  • UNI-MOL: A UNIVERSAL 3D MOLECULAR REPRESENTATION LEARNING FRAMEWORK
  • 笔记day7
  • 106,【6】 buuctf web [SUCTF 2019]CheckIn