为什么docker-php-ext-install不包含一些扩展,而它比pecl有优势?

7ajki6be  于 2023-04-28  发布在  PHP
关注(0)|答案(5)|浏览(202)

让我们考虑这些命令:
我们用php 7启动docker image。2基于Alpine。

docker run -it php:7.2-fpm-alpine3.7 sh

我们试图安装php-mongodb作为任何其他扩展

docker-php-ext-install mongodb

但我们得到的错误:

error: /usr/src/php/ext/mongodb does not exist

usage: /usr/local/bin/docker-php-ext-install [-jN] ext-name [ext-name 
...]
   ie: /usr/local/bin/docker-php-ext-install gd mysqli
       /usr/local/bin/docker-php-ext-install pdo pdo_mysql
       /usr/local/bin/docker-php-ext-install -j5 gd mbstring mysqli pdo pdo_mysql shmop

if custom ./configure arguments are necessary, see docker-php-ext-configure

Possible values for ext-name:
bcmath bz2 calendar ctype curl dba dom enchant exif fileinfo filter ftp gd gettext gmp hash iconv imap interbase intl json ldap mbstring mysqli oci8 odbc opcache pcntl pdo pdo_dblib pdo_firebird pdo_mysql pdo_oci pdo_odbc pdo_pgsql pdo_sqlite pgsql phar posix pspell readline recode reflection session shmop simplexml snmp soap sockets sodium spl standard sysvmsg sysvsem sysvshm tidy tokenizer wddx xml xmlreader xmlrpc xmlwriter xsl zend_test zip

Some of the above modules are already compiled into PHP; please check
the output of "php -i" to see which modules are already loaded.

我发现了一些安装了mongodb驱动程序的php镜像:
https://github.com/Vinelab/docker-php-mongo
https://gist.github.com/ebuildy/ba6820cbe1befaa229d2
https://hub.docker.com/r/spittet/php-mongodb/
所有的命令都是相同的:

pecl install mongodb

docker-php-ext-installpecl有什么优势吗?我看到大多数扩展都是通过docker-php-ext-install安装的。我发现这个问题没有答案:
https://github.com/docker-library/php/issues/374
如果pecl包含所有扩展,但docker-php-ext-install允许安装约束列表,为什么要创建它?

pcww981p

pcww981p1#

答案可能变得与问题无关。尽管如此,我还是添加了以下片段,以防有人像我一样来到这里,并可以在docker容器中安装mongodb扩展for php。我用php7。3-fpm. https://www.php.net/manual/en/mongodb.installation.pecl.php

RUN pecl install mongodb \
    &&  echo "extension=mongodb.so" > $PHP_INI_DIR/conf.d/mongo.ini
ih99xse1

ih99xse12#

您可以在官方php镜像存储库中的docker-php-ext-install vs pecl issue中找到解释

7kqas0il

7kqas0il3#

我的docker一直抱怨它找不到 www.example.com 扩展。最后我想出来运行以下代码

RUN apt-get install  -y openssl libssl-dev libcurl4-openssl-dev
RUN pecl install mongodb-1.6.0
RUN docker-php-ext-enable /usr/local/lib/php/extensions/no-debug-non-zts-20180731/mongodb.so

看起来Docker希望你通过docker-php-ext-enable启用一个PHP扩展

xqk2d5yq

xqk2d5yq4#

我正在使用这个命令行并为我工作。使用docker ps命令和docker exec -it <container id> bash获取dockercontainer id

apt-get update
apt-get install openssl libssl-dev libcurl4-openssl-dev
pecl install mongo
echo "extension=mongo.so" > /usr/local/etc/php/conf.d/mongo.ini
qco9c6ql

qco9c6ql5#

顺利安装代php:8.2-fpm Docker镜像试试这个:

RUN pecl install mongodb && docker-php-ext-enable mongodb

相关问题