无法使用 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
我想使用 DDEV 将 gmp 扩展 添加到 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的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Apache Server 2.4 在 PHP 7.4 中启用 openSSL?
如何使用 DirectAdmin 在 Debian 10 上启用 Brotli?