PHP - 安装/开启扩展[如: PHP 8.0 开启PDO, bcmath, mysqli, gd] - docker - 学习/实践

20 篇文章 1 订阅

1.应用场景

主要用于学习Docker容器中如何开启扩展。

2.学习/操作

1.文档阅读

TBD

2.整理输出

2.1 docker中安装PHP参见

PHP 8.0 - window 10下[含Docker方式]安装 - 学习/实践_穿素白衫的少年的博客-CSDN博客

Docker Hub // PHP 各版本镜像

2.2 执行命令查看开启的扩展

php -v

php -m

可以看到一些信息, 安装之后,未做任何配置,默认开启的扩展都是PHP Modules的扩展,而Zend Modules没有扩展开启。

需求

现在做个abstract test 测试生成器的性能如何

代码参见TBD

其中有使用到bcsub函数, 也就是BC扩展PHP: BC Math - Manual 

默认是没有开启的,这里以Docker中开启BC扩展为例

2.3 找到php.ini配置文件

whereis php

或者

php --ini

一般在/usr/local/etc/php目录下

进入该目录

2.4 拷贝并修改配置文件

cp php.ini-development php.ini

输入命令:

vim php.ini

安装vim方法: 

2021-04-30 - Docker - 编辑容器中的文件 - 学习/实践_穿素白衫的少年的博客-CSDN博客_docker 编辑容器

2.5 编辑开启扩展

但是发现, bcmath在docker中开启的方式不是这样的,

docker做了另外的处理,网上其博客,如下执行步骤

于是, 进入到 /usr/local/bin目录下, 并且大致查看了目录下内容, 多数为shell脚本,[应是docker做了外层处理]

docker-php-ext-install shell脚本中,进入到  cd /usr/src/php/ext PHP源代码扩展目录下, 大致意思应该就是查找要安装的扩展然后安装~

php/docker-php-ext-install at 1bc63c1ce4294a4ecb50c60dcf6a57d6749cba7d · docker-library/php · GitHub--- docker-library 直接查看相关文件内容

输入 docker-php-ext-install -h 再次查看该命令用法[下面输入中,第一个扩展就是bcmath, 因为顺序按照英文字母顺序输出],其实上面的shell脚本内容中已经有说明,

结合自身需求,输入命令如下:

docker-php-ext-install bcmath

或者

如 docker-php-ext-install mysqli

上面有一些信息值得关注,接下来执行输出的提示

make test

同时可以看到新增的配置文件

/usr/local/etc/php/conf.d 目录下

补充:

安装mysqli之后

插入:

安装gd扩展,

php - Installing GD in Docker - Stack Overflow

php 7.4 没有安装扩展

这里在安装项目的依赖时:composer install 

出现如下报错,

解决办法:

apt-get update -y && apt-get install -y libpng-dev

然后执行

docker-php-ext-install gd

延伸:

解决zip扩展问题

docker-php-ext-install zip fails · Issue #61 · docker-library/php · GitHub

简单说,是相同的原因,也是系统中缺少必要的库,先安装依赖的库,然后再安装扩展即可

apt-get update && apt-get install -y \
zlib1g-dev \
libzip-dev

docker-php-ext-install zip

2.6 重启容器

docker restart 容器ID/容器名

或者直接通过desktop App点击重启按钮操作均可

2.7 进入容器, 并查看扩展是否开启

docker exec -it 容器ID bin/bash

php -m

可以看到一切开启扩展~~ Over

2.8 然后继续任务测试~

后连续执行单独运分别行三次

with-gen

root@512cde94c29c:/var/www/html/learning_of_php8.0/generator/abstract-test# php -f ./with-gen.php

time: 0.3218

memory (byte): 16781312

root@512cde94c29c:/var/www/html/learning_of_php8.0/generator/abstract-test# php -f ./with-gen.php

time: 0.3188

memory (byte): 16781312

root@512cde94c29c:/var/www/html/learning_of_php8.0/generator/abstract-test# php -f ./with-gen.php

time: 0.3157

memory (byte): 16781312

not-gen

root@512cde94c29c:/var/www/html/learning_of_php8.0/generator/abstract-test# php -f ./not-gen.php

time: 0.3298

memory (byte): 52436992

root@512cde94c29c:/var/www/html/learning_of_php8.0/generator/abstract-test# php -f ./not-gen.php

time: 0.3236

memory (byte): 52436992

root@512cde94c29c:/var/www/html/learning_of_php8.0/generator/abstract-test# php -f ./not-gen.php

time: 0.3241

memory (byte): 52436992

root@512cde94c29c:/var/www/html/learning_of_php8.0/generator/abstract-test# 

测试结果:【AVG】

--------------------------------------------
                |  time    | memory, mb |
--------------------------------------------
| not gen  | 0.3258 | 50.01           |
--------------------------------------------
| with gen | 0.3188 | 16.00           |
--------------------------------------------

顺便可以看到

PHP 8 下面将生成器的占用内存更加少,不过相比在 >=5.5, 7.x

PHP 8 做了非生成器下优化,内存从146.75降到50.01 MB, 生成器下内存没有变化~

测试正常运行~

后续补充

...

3.问题/补充

TBD

4.参考

参见上面文档列表

后续补充

...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值