无法使用 ddev 为 php7.4 启用 php-gmp

Posted

技术标签:

【中文标题】无法使用 ddev 为 php7.4 启用 php-gmp【英文标题】:unable to enable php-gmp for php7.4 with ddev 【发布时间】:2021-01-17 03:55:09 【问题描述】:

因为这个错误信息the requested php extension gmp is missing from your system 我想使用 DDEVgmp 扩展 添加到 php 7.4。

首先我创建了一个.ddev/php/ 文件夹并创建了一个99-gmp.ini 文件。 其次,我将extension=php_gmp.so 添加到99-gmp.ini

我 ssh 登录 ddev ssh 并运行:

sudo apt install php-gmp

sudo apt-get install php-gmp

sudo apt-get install php7.4-gmp 并尝试了一些变体,但找不到包

搜索apt search php-gmp 结果:

Reading package lists... DoneBuilding dependency tree Reading state information... Done E: Unable to locate package php-gmp

apt search gmp 生成 3 个包,均已安装:

Full Text Search... Done

libgmp10/now 2:6.1.2+dfsg-4 amd64 [已安装,本地] 多精度算术库

libhogweed4/现在 3.4.1-1 amd64 [已安装,本地] 低级密码库(公钥密码)

libnettle6/now 3.4.1-1 amd64 [已安装,本地] 低级密码库(对称和单向密码)

寻找php7.4扩展: apt search php7.4 由于某种原因找不到gmp

Sorting... Done Full Text Search... Done

libapache2-mod-php7.4/now 7.4.8-1+0~20200713.23+debian10~1.gbpb2c15c amd64 [已安装,本地] 服务器端,嵌入 html 的脚本语言(Apache 2 模块)

php7.4-bcmath/现在 7.4.8-1+0~20200713.23+debian10~1.gbpb2c15c amd64 [已安装,本地] PHP 的 Bcmath 模块

php7.4-bz2/现在 7.4.8-1+0~20200713.23+debian10~1.gbpb2c15c amd64 [已安装,本地] 用于 PHP 的 bzip2 模块

php7.4-cgi/now 7.4.8-1+0~20200713.23+debian10~1.gbpb2c15c amd64 [已安装,本地] 服务器端,嵌入 HTML 的脚本语言(CGI 二进制)

php7.4-cli/now 7.4.8-1+0~20200713.23+debian10~1.gbpb2c15c amd64 [已安装,本地] PHP 脚本语言的命令行解释器

php7.4-common/now 7.4.8-1+0~20200713.23+debian10~1.gbpb2c15c amd64 [已安装,本地] PHP 的文档、示例和通用模块

php7.4-curl/现在 7.4.8-1+0~20200713.23+debian10~1.gbpb2c15c amd64 [已安装,本地] PHP 的 CURL 模块

php7.4-fpm/现在 7.4.8-1+0~20200713.23+debian10~1.gbpb2c15c amd64 [已安装,本地] 服务器端,嵌入 HTML 的脚本语言(FPM-CGI 二进制)

php7.4-gd/现在 7.4.8-1+0~20200713.23+debian10~1.gbpb2c15c amd64 [已安装,本地] PHP的GD模块

php7.4-intl/现在 7.4.8-1+0~20200713.23+debian10~1.gbpb2c15c amd64 [已安装,本地] PHP 国际化模块

php7.4-json/现在 7.4.8-1+0~20200713.23+debian10~1.gbpb2c15c amd64 [已安装,本地] PHP 的 JSON 模块

php7.4-ldap/现在 7.4.8-1+0~20200713.23+debian10~1.gbpb2c15c amd64 [已安装,本地] PHP 的 LDAP 模块

php7.4-mbstring/现在 7.4.8-1+0~20200713.23+debian10~1.gbpb2c15c amd64 [已安装,本地] PHP 的 MBSTRING 模块

php7.4-mysql/now 7.4.8-1+0~20200713.23+debian10~1.gbpb2c15c amd64 [已安装,本地] PHP 的 MySQL 模块

php7.4-opcache/现在 7.4.8-1+0~20200713.23+debian10~1.gbpb2c15c amd64 [已安装,本地] 用于 PHP 的 Zend OpCache 模块

php7.4-pgsql/现在 7.4.8-1+0~20200713.23+debian10~1.gbpb2c15c amd64 [已安装,本地] PHP 的 PostgreSQL 模块

php7.4-phpdbg/现在 7.4.8-1+0~20200713.23+debian10~1.gbpb2c15c amd64 [已安装,本地] 服务器端,嵌入 HTML 的脚本语言(PHPDBG 二进制)

php7.4-readline/现在 7.4.8-1+0~20200713.23+debian10~1.gbpb2c15c amd64 [已安装,本地] PHP 的 readline 模块

php7.4-soap/现在 7.4.8-1+0~20200713.23+debian10~1.gbpb2c15c amd64 [已安装,本地] PHP 的 SOAP 模块

php7.4-sqlite3/现在 7.4.8-1+0~20200713.23+debian10~1.gbpb2c15c amd64 [已安装,本地] PHP 的 SQLite3 模块

php7.4-xml/现在 7.4.8-1+0~20200713.23+debian10~1.gbpb2c15c amd64 [已安装,本地] PHP 的 DOM、SimpleXML、XML 和 XSL 模块

php7.4-xmlrpc/now 7.4.8-1+0~20200713.23+debian10~1.gbpb2c15c amd64 [已安装,本地] 用于 PHP 的 XMLRPC-EPI 模块

php7.4-zip/现在 7.4.8-1+0~20200713.23+debian10~1.gbpb2c15c amd64 [已安装,本地] PHP 的 Zip 模块

项目信息

PHP 版本:7.4 操作系统:Debian 10 NFS 挂载已启用:false 数据库类型:mariadb MariaDB 版本:10.3

【问题讨论】:

【参考方案1】:

通常,您应该通过将webimage_extra_packages 添加到您的配置来添加包(参见documentation):

webimage_extra_packages: [php7.4-gmp]

使用ddev restart 重新启动容器时,将应用此配置并安装包。你试过吗?

使用这种方式有助于保持这个包与 ddev 使用的容器相关联。虽然将其添加到正在运行的容器(如您所做的那样)并没有明显错误,但如果您更改 PHP 版本或升级 ddev,该包将再次被删除。通过使用配置,可以保证在容器镜像发生变化时重新安装该包。

【讨论】:

很好,这就是诀窍。我本来要关注ddev.readthedocs.io/en/latest/users/extend/… @Joehoe 如果您需要更改配置,您还可以这样做。我会建议先使用默认配置,再次尽量减少更改

以上是关于无法使用 ddev 为 php7.4 启用 php-gmp的主要内容,如果未能解决你的问题,请参考以下文章

无法使用自制软件和 php7.4 安装 mcrypt

如何使用 Apache Server 2.4 在 PHP 7.4 中启用 openSSL?

如何在 PHP7.4 中使用 inotify

如何使用 DirectAdmin 在 Debian 10 上启用 Brotli?

php7.4,php7.4-fpm,http2,Apache,nginx,我很困惑[关闭]

如何在 php 7.4 上安装 ziparchive?