【docker】php容器安装扩展

news2024/9/21 21:42:05

环境说明

操作系统:ubuntu 22.04

架构:x86_64

docker运行php容器,php版本7.4。

一、安装php自带扩展

说明:php自带扩展,可看php.ini文件中的,如gd、pdo_mysql、opcache、mysqli等等。这里只举例安装了gd和opcache,安装其他扩展和opcache保持一致即可。

(一)安装gd扩展

这个gd扩展相对比其他复杂一些,需要先安装对应依赖环境。

1.安装gd依赖
apt-get install -y \
      libfreetype6-dev \
      libjpeg62-turbo-dev \
      libpng-dev \
      libwebp-dev \
      zlib1g-dev
2.编译选项
docker-php-ext-configure gd \
     --enable-gd \
     --with-freetype \
     --with-jpeg \
     --with-webp
3.再安装gd扩展
docker-php-ext-install -j$(nproc) gd

说明:-j$(nproc):这是一个选项,用于指定并行构建的数量。nproc 是一个命令,用于返回系统中的处理器数量。-j$(nproc) 表示使用系统中的处理器数量作为并行构建的数量,这样可以加速构建过程。

4.在php.ini文件中配置gd.so
extension=gd.so
5.重启php
docker restart 容器名/容器id

(二)安装opcache

1.执行命令
docker-php-ext-install opcache

安装完成如下图:

 2.在php.ini文件中配置opcache.so
extension=opcache.so
3.重启php
docker restart 容器名/容器id

二、安装三方php扩展

说明:这里举例安装redis和imagick。

(一)安装redis扩展

1.下载redis扩展

pecl官方地址:PECL :: The PHP Extension Community Library

 下载的版本是:redis-5.3.7.tgz 

2.安装php扩展
(1)上传 redis 压缩包到服务器
(2)切换到 redis 的压缩包目录
(3)解压 redis
tar -zxvf redis-5.3.7.tgz
(4)复制解压后的目录到php的容器中
docker cp /data/soft/redis-5.3.7  容器名(或容器id):/usr/src/php/ext/redis
(5)进入php容器
docker exec -it 容器名/容器id /bin/bash
(6)执行安装命令
# 切换到php可执行文件目录,如果你在容器中可以直接执行命令,可忽略这一步
cd /usr/local/bin
# 执行命令
docker-php-ext-install redis

安装完成如下图:

生成的扩展在 /usr/local/lib/php/extensions/no-debug-non-zts-20190902/ 这个目录下

(7)在php.ini文件中配置redis.so
extension=redis.so
(8)退出php容器 exit
(9)重启php容器
docker restart 容器名/容器id
(10)验证
# 进入php容器
docker exec -it 容器名/容器id /bin/bash
# 显示php已安装的扩展
php -m

(二)安装imagick

1.先安装ImageMagick

(1)下载地址:Index of /archive

(2)上传到服务器上

(3)解压ImageMagick

tar -zxvf ImageMagick-6.9.13-14.tar.gz 

(4)复制解压后的目录到php容器中

docker cp /data/soft/ImageMagick-6.9.13-14   容器名(或容器id):/opt

(5)进入php容器并安装ImageMagick

# 进入php容器
docker exec -it 容器名/容器id /bin/bash
# 安装ImageMagick
## 切换到复制到php的容器目录
cd /opt/ImageMagick-6.9.13-14/
## 编译选项
./configure --prefix=/usr/local/imagemagick
## 编译安装
make && make install

到此,ImageMagick就安装成功了。

2.安装imagick
方式一:通过pecl安装

(1)进入php容器

docker exec -it 容器名/容器id /bin/bash

(2)找到之前安装php的pecl文件

whereis pecl

(3)通过pecl安装imagick

/usr/local/bin/pecl install imagick

安装过程可能会让你输入ImageMagick的路径 上面我们安装的路径:/usr/local/imagemagick 输入回车即可.安装成功

(4)在php.ini中配置imagick.so

extension=imagick.so

(5)重启php容器

docker restart 容器名/容器id

(6)验证扩展是否安装成功 php -m

方式二:源码安装imagick(phpize)

(1)下载imagick

地址:PECL :: Package :: imagick

笔者下载的是imagick-3.5.0.tgz。

(1)上传服务器(xftp)

(2)解压

(3)将解压后的imagick目录复制到php容器中

docker cp /data/soft/imagick-3.5.0  容器名(或容器id):/opt

(4)进入php容器并安装imagick

# 进入php容器
docker exec -it 容器名/容器id /bin/bash
# 安装imagick
## 切换到复制到php的容器目录
cd /opt/imagick-3.5.0/
## 先编译环境准备
/usr/local/bin/phpize
## 编译选项 指定ImageMagick安装目录
./configure --with-php-config=/usr/local/bin/php-config --with-imagick=/usr/local/imagemagick
## 编译安装
make && make install

(5)在php.ini文件中添加imagick.so文件

extension=redis.so

(6)退出并重启php容器

# 退出容器
exit
# 重启
docker restart 容器id/容器名

(7)验证 php -m

参考:如何在docker容器中安装php自带的扩展模块_docker安装php扩展-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1990457.html

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

相关文章

【网站项目】SpringBoot749乡村日常政务管理系统

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

Android RadioGroup实现多行显示,并保持单选

公司项目最近有个这样的需求&#xff0c;要求实现【多个文本&#xff0c;多行显示&#xff0c;且同时只能选中一个】。设计图效果如下&#xff1a; 看上去很简单&#xff0c;使用 RadioGroup LinearLayout RadioButton 快速实现&#xff1a; <RadioGroupandroid:id"…

项目细节优化

文章目录 1.解决重复注册1.AuthUserDomainServiceImpl.java 在注册之前从db查询是否已经存在该用户2.AuthUserService.java3.AuthUserServiceImpl.java4.测试1.请求2.后台&#xff0c;提示已经注册 2.用户信息查询1.接口设计2.代码实现1.UserController.java2.AuthUserDomainSe…

C语言:复读机2种写法(输入什么就输出什么)

&#xff08;1&#xff09;题目&#xff1a;输入什么内容&#xff0c;输出就是什么内容&#xff0c;遇到"#"为止。输入一个随便的字符 &#xff08;2&#xff09;代码&#xff1a; 【1】getchar()和putchar() #include "stdio.h"int main() {char ch;pr…

基于Python的Scrapy爬虫的个性化书籍推荐系统【Django框架、超详细系统设计原型】

文章目录 有需要本项目的代码或文档以及全部资源&#xff0c;或者部署调试可以私信博主项目介绍系统分析系统设计展示总结 有需要本项目的代码或文档以及全部资源&#xff0c;或者部署调试可以私信博主 项目介绍 近年来&#xff0c;随着互联网的蓬勃发展&#xff0c;企事业单…

linux docker 仓库拉取失败问题(已解决)

仓库拉取失败问题 前言错误示例解决注意 前言 我在服务器拉取仓库的镜像时&#xff0c;出现如下错误&#xff1a; Error response from daemon: Get “http://192.168.37.51:8050/v2/”: net/http: HTTP/1.x transport connection broken: malformed HTTP response “\x15\x0…

数据结构_study(七)

查找 查找表&#xff1a;同一类型的数据元素构成的集合 关键字&#xff08;键值&#xff09;&#xff1a;数据元素中某个数据项的值&#xff0c;用来标识数据元素 主关键字&#xff1a;唯一标识一个记录的关键字 次关键字&#xff1a;可以标识多个数据元素的关键字 查找&…

浅析DNS服务器:办公网DNS的架构思路分享

办公网 DNS 不同于业务网 DNS&#xff0c;主要承担的是企业或组织机构内部员工的日常办公的域名解析需求。比如日常的办公系统的访问、通过第三方认证系统进行身份认证才能访问办公系统资源、办公PC需要进行AD域控管理等……由于此办公网DNS服务器的设计需求也不尽相同&#xf…

【脚本说明撰写markdown】如何基于VScode 撰写使用说明文档,及格式转换.md、.html、.pdf格式

如何基于VScode 撰写使用说明文档&#xff0c;及格式转换.md、.html、.pdf格式 下载插件 下载markdown 进入vscode后&#xff0c;进入扩展工具&#xff08;快捷键ctrlshiftX&#xff09;&#xff0c;搜索markdown&#xff0c;选择markdown All in One并安装 安装Markdown Pr…

SolidWorks钣金中如何定义K因子、折弯系数

在使用SolidWorks设计钣金零件时总是会遇到折弯系数、K因子这样的专业名称&#xff0c;不知如何去定义他们的。 在SolidWorks中除了直接指定K因子确定折弯系数之外还可以利用折弯系数表来确定。在折弯系数表中指定钣金零件的折弯系数或折弯扣除数值等&#xff0c;折弯系数表还…

【Material-UI】按钮组:Split Button 详解

文章目录 一、Split Button 概述1. 组件介绍2. 基本用法 二、Split Button 的应用场景1. 提交操作2. 导出操作3. 文件操作 三、Split Button 的样式定制1. 变体&#xff08;Variants&#xff09;2. 颜色&#xff08;Colors&#xff09; 四、Split Button 的优势1. 提升用户体验…

江科大/江协科技 STM32学习笔记P20

文章目录 编码器接口测速定时器有关的库函数Encoder.cmain.c 编码器接口测速 编码器接口的初始化&#xff0c;第一步&#xff0c;RCC开启时钟&#xff0c;开启GPIO和定时器的时钟&#xff0c;第二步&#xff0c;配置GPIO&#xff0c;这里把PA6和PA7配置成输入模式&#xff0c;第…

【环绕字符串中唯一的子字符串】python刷题记录

R4-字符串 动态规划 class Solution:def findSubstringInWraproundString(self, s: str) -> int:dp[0]*26num1#dp初始化dp[ord(s[0])-ord(a)]1for c1,c2 in pairwise(s):if not (ord(c2)-ord(c1)-1)%26:num1else:num1dp[id]max(dp[id : ord(c2)-ord(a)],num)return sum(dp)p…

Java设计模式(适配器模式)

定义 将一个类的接口转换成客户希望的另一个接口。适配器模式让那些接口不兼容的类可以一起工作。 角色 目标抽象类&#xff08;Target&#xff09;&#xff1a;目标抽象类定义客户所需的接口&#xff08;在类适配器中&#xff0c;目标抽象类只能是接口&#xff09;。 适配器类…

笔记小结:《利用Python进行数据分析》之字符串操作(含正则表达式)

目录 字符串对象方法 使用split分割字符串 连接字符串 查找子串 字串计数 替换字串 字符串方法表 正则表达式 分割数量不定的空白符 匹配正则表达式的所有模式 匹配字符串 替换字符串 将字符串分组 带有分组功能的findall pandas矢量化字符串函数 Python能够成…

hongmeng开发

Image图片组件 Text组件 如在两个限定目录里面定义完后&#xff0c;也要在 base牡蛎下去定义一下&#xff0c;不然会报错 TextInput Button Slider 案例 State imageWidth:number30//构建 → 界面build() {Column(){Image($r(app.media.startIcon)).width(this.imageWidth)Te…

帆软填报报表单元格根据其它单元格内容决定另外的单元格可筛选什么值

效果图&#xff1a; 方法有三种&#xff1a; 方法一&#xff1a; 添加链接描述

基于sklearn的机器学习 — 支持向量机(SVM)

支持向量机&#xff08;SVM&#xff1a;support vector machine&#xff09;另一种功能强大、应用广泛的学习算法&#xff0c;可应用于分类、回归、密度估计、聚类等问题。SVM可以看作是感知器&#xff08;可被视为一种最简单形式的前馈神经网络&#xff0c;是一种二元线性分类…

AI在医学领域:使用眼底图像和基线屈光数据来定量预测近视

关键词&#xff1a;深度学习、近视预测、早期干预、屈光数据 儿童近视已经成为一个全球性的重大健康议题。其发病率持续攀升&#xff0c;且有可能演变成严重且不可逆转的状况&#xff0c;这不仅对家庭幸福构成威胁&#xff0c;还带来巨大的经济负担。当前的研究着重指出&#x…

Android Studio新版UI常用设置

新版UI固然好看&#xff0c;但启用后一些常用的功能也被初始化了&#xff0c;下面会说明如何设置一些常用的功能。 一、启用\禁用新版UI Setting -> Appearance & Behavior -> New UI -> Enable new UI 二、展示Git部分的Local Changes窗口 Setting -> Ve…