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

news2025/4/24 17:56:20

环境:
容器里面为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 all
  GMP module for PHP [default]

php7.4-gmp/focal-updates 7.4.3-4ubuntu2.28 amd64
  GMP 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 all
  GMP module for PHP [default]

php5.6-gmp/focal 5.6.40-81+ubuntu20.04.1+deb.sury.org+1 amd64
  GMP module for PHP

php7.0-gmp/focal 7.0.33-79+ubuntu20.04.1+deb.sury.org+1 amd64
  GMP module for PHP

php7.1-gmp/focal 7.1.33-65+ubuntu20.04.1+deb.sury.org+1 amd64
  GMP module for PHP

php7.2-gmp/focal 7.2.34-54+ubuntu20.04.1+deb.sury.org+1 amd64
  GMP module for PHP

php7.3-gmp/focal,now 7.3.33-24+ubuntu20.04.1+deb.sury.org+1 amd64 [installed]
  GMP module for PHP

php7.4-gmp/focal 1:7.4.33-18+ubuntu20.04.1+deb.sury.org+1 amd64
  GMP module for PHP

php8.0-gmp/focal 1:8.0.30-12+ubuntu20.04.1+deb.sury.org+1 amd64
  GMP module for PHP

php8.1-gmp/focal 8.1.31-1+ubuntu20.04.1+deb.sury.org+1 amd64
  GMP module for PHP

php8.2-gmp/focal 8.2.27-1+ubuntu20.04.1+deb.sury.org+1 amd64
  GMP module for PHP

php8.3-gmp/focal 8.3.16-1+ubuntu20.04.1+deb.sury.org+1 amd64
  GMP module for PHP

php8.4-gmp/focal 8.4.3-1+ubuntu20.04.1+deb.sury.org+1 amd64
  GMP 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.ini

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

root@server:/etc/apt# php -m | grep gmp
gmp

root@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.coloradmin.cn/o/2293759.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

javaEE-8.JVM(八股文系列)

目录 一.简介 二.JVM中的内存划分 JVM的内存划分图: 堆区:​编辑 栈区:​编辑 程序计数器:​编辑 元数据区:​编辑 经典笔试题: 三,JVM的类加载机制 1.加载: 2.验证: 3.准备: 4.解析: 5.初始化: 双亲委派模型 概念: JVM的类加…

大语言模型轻量化:知识蒸馏的范式迁移与工程实践

大语言模型轻量化:知识蒸馏的范式迁移与工程实践 🌟 嗨,我是LucianaiB! 🌍 总有人间一两风,填我十万八千梦。 🚀 路漫漫其修远兮,吾将上下而求索。 摘要 在大型语言模型&#xff…

数据结构:时间复杂度

文章目录 为什么需要时间复杂度分析?一、大O表示法:复杂度的语言1.1 什么是大O?1.2 常见复杂度速查表 二、实战分析:解剖C语言代码2.1 循环结构的三重境界单层循环:线性时间双重循环:平方时间动态边界循环&…

[创业之路-276]:从燃油汽车到智能汽车:工业革命下的价值变迁

目录 前言: 从燃油汽车到智能汽车:工业革命下的价值变迁 前言: 燃油汽车,第一次、第二次工业革命,机械化、电气化时代的产物,以机械和电气自动化为核心价值。 智能汽车,第三次、第四次工业革…

vue页面和 iframe多页面无刷新方案和并行 并接入 micro 微前端部分思路

前: 新进了一家公司,公司是做电商平台的, 用的系统竟然还是jsp的网站,每次修改页面还需要我下载idea代码,作为一个前端, 这可不能忍,于是向上申请,意思你们后台做的太辣鸡,我要重做,经领导层商议从去年6月开始到今年12月把系统给重构了 公司系统采用的是每个jsp页面都是一个ifr…

Python 自学秘籍:开启编程之旅,人生苦短,我用python。

从2009年,用了几次python后就放弃了,一直用的php,现在人工智能时代,完全没php什么事情。必须搞python了,虽然已经40多岁了。死磕python了。让滔滔陪着你一起学python 吧。 开启新世界 在当今人工智能化的时代&#xff…

每日一题洛谷P5721 【深基4.例6】数字直角三角形c++

#include<iostream> using namespace std; int main() {int n;cin >> n;int t 1;for (int i 0; i < n; i) {for (int j 0; j < n - i; j) {printf("%02d",t);t;}cout << endl;}return 0; }

解决DeepSeek服务器繁忙问题:本地部署与优化方案

deepseek服务器崩了&#xff0c;手把手教你如何在手机端部署一个VIP通道&#xff01; 引言 随着人工智能技术的快速发展&#xff0c;DeepSeek等大语言模型的应用越来越广泛。然而&#xff0c;许多用户在使用过程中遇到了服务器繁忙、响应缓慢等问题。本文将探讨如何通过本地部…

【后端开发】系统设计101——通信协议,数据库与缓存,架构模式,微服务架构,支付系统(36张图详解)

【后端开发】系统设计101——通信协议&#xff0c;数据库与缓存&#xff0c;架构模式&#xff0c;微服务架构&#xff0c;支付系统&#xff08;36张图&#xff09; 文章目录 1、通信协议通信协议REST API 对比 GraphQL&#xff08;前端-web服务&#xff09;grpc如何工作&#x…

Java基础——分层解耦——IOC和DI入门

目录 三层架构 Controller Service Dao ​编辑 调用过程 面向接口编程 分层解耦 耦合 内聚 软件设计原则 控制反转 依赖注入 Bean对象 如何将类产生的对象交给IOC容器管理&#xff1f; 容器怎样才能提供依赖的bean对象呢&#xff1f; 三层架构 Controller 控制…

武汉火影数字|VR虚拟现实:内容制作与互动科技的奇妙碰撞

VR虚拟现实是一种利用计算机技术生产三维虚拟世界的技术&#xff0c;通过头戴式显示器、手柄等设备&#xff0c;用户可以身临其境地感受虚拟世界&#xff0c;与其中的物体进行自然交互。 当内容制作遇上 VR&#xff0c;会发生什么&#xff1f; 当内容制作遇上VR&#xff0c;就像…

SpringBoot扩展篇:@Scope和@Lazy源码解析

SpringBoot扩展篇&#xff1a;Scope和Lazy源码解析 1. 研究主题及Demo2. 注册BeanDefinition3. 初始化属性3.1 解决依赖注入3.2 创建代理 ContextAnnotationAutowireCandidateResolver#getLazyResolutionProxyIfNecessary3.3 代理拦截处理3.4 单例bean与原型bean创建的区别 4. …

tkvue 入门,像写html一样写tkinter

介绍 没有官网&#xff0c;只有例子 安装 像写vue 一样写tkinter 代码 pip install tkvue作者博客 修改样式 import tkvue import tkinter.ttk as ttktkvue.configure_tk(theme"clam")class RootDialog(tkvue.Component):template """ <Top…

Hackmyvm Connection

基本信息 难度&#xff1a;简单 靶机&#xff1a;192.168.194.11 kali&#xff1a;192.168.194.9 扫描 常规nmap扫描起手 nmap -sT -sV -A -T4 192.168.194.11 -p- 查看smb服务开启目录 139和445端口的smb服务直接以访客账号登录&#xff0c;无需密码验证成功。对应的ht…

Unity 2D实战小游戏开发跳跳鸟 - 记录显示最高分

上一篇文章中我们实现了游戏的开始界面,在开始界面中有一个最高分数的UI,本文将接着实现记录最高分数以及在开始界面中显示最高分数的功能。 添加跳跳鸟死亡事件 要记录最高分,则需要在跳跳鸟死亡时去进行判断当前的分数是否是最高分,如果是最高分则进行记录,如果低于之前…

数据结构(2)——线性表与顺序表实现

目录 前言 一、线性表 二、顺序表 2.1概念 2.2类型的选择 2.3实现 1.初始化 2.检查是否需要扩容 3.尾插 4.尾删 5.头插 6.头删 7.某一个位置添加 8.某一个位置删除 9.基于某一位置的尾插删 10.查找 11.修改 12.销毁 总结 前言 今天对顺序表进行学习&#xf…

【LeetCode】5. 贪心算法:买卖股票时机

太久没更了&#xff0c;抽空学习下。 看一道简单题。 class Solution:def maxProfit(self, prices: List[int]) -> int:cost -1profit 0for i in prices:if cost -1:cost icontinueprofit_ i - costif profit_ > profit:profit profit_if cost > i:cost iret…

FastReport.NET控件篇之交叉表控件

认识交叉表 上面是交叉表的原型&#xff0c;关键的三个单元格。 单元格①&#xff1a;用于扩展行数据&#xff0c;譬如打印学生成绩表时&#xff0c;每个学生一行&#xff0c;那么这个地方就是以学生姓名列进行打印。 单元格②&#xff1a;用于扩展列数据&#xff0c;譬如打印…

互联网医院开发|互联网医院成品|互联网医院系统定制

互联网医院开发设计风格需综合考量多方面因素&#xff0c;以确保其专业性、易用性与高效性。在界面设计上&#xff0c;应遵循简洁直观的原则。避免过于繁杂的布局&#xff0c;确保关键功能模块清晰呈现&#xff0c;方便用户快速定位与操作。色彩搭配要注重视觉舒适度与专业性&a…

17.3.4 颜色矩阵

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 17.3.4.1 矩阵基本概念 矩阵&#xff08;Matrix&#xff09;是一个按照长方阵列排列的复数或实数集合&#xff0c;类似于数组。 由…