简体   繁体   English

如何在 php:7.2-fpm-alpine 上启用 mongodb?

[英]How to enable mongodb on php:7.2-fpm-alpine?

I am trying to enable mongodb on php:7.2-fpm-alpine, and I am not able to see the mongodb extension loaded in php.ini我正在尝试在 php:7.2-fpm-alpine 上启用 mongodb,但我看不到 php.ini 中加载的 mongodb 扩展

Here is some additional info:以下是一些附加信息:

# mongo --version
MongoDB shell version v3.4.4
git version: 888390515874a9debd1b6c5d36559ca86b44babd
OpenSSL version: LibreSSL 2.5.5
allocator: system
modules: none
build environment:
    distarch: x86_64
    target_arch: x86_64

and

    # php -i | grep mongo 
PHP Warning:  PHP Startup: Unable to load dynamic library 'mongodb.so' (tried: /usr/local/lib/php/extensions/no-debug-non-zts-20170718/mongodb.so (Error loading shared library /usr/local/lib/php/extensions/no-debug-non-zts-20170718/mongodb.so: No such file or directory), /usr/local/lib/php/extensions/no-debug-non-zts-20170718/mongodb.so.so (Error loading shared library /usr/local/lib/php/extensions/no-debug-non-zts-20170718/mongodb.so.so: No such file or directory)) in Unknown on line 0
/usr/local/etc/php/conf.d/20_mongodb.ini,

Based on that warning I guess that the mongo extension is missing, but doesn't that conflict the info retrieved by the # mongo --version command?基于该警告,我猜测 mongo 扩展名丢失了,但这与 # mongo --version 命令检索到的信息不冲突吗?

I also tried to look for mongodb.so using find / -name 'mongo*.*'.我还尝试使用 find / -name 'mongo*.*' 查找 mongodb.so。

What is the best way to install and enable mongodb driver on php:7.2-fpm-alpine?在 php:7.2-fpm-alpine 上安装和启用 mongodb 驱动程序的最佳方法是什么?

Update: Additional info when I run this command: # apk list -a |更新:运行此命令时的附加信息:# apk list -a | grep "mongo" I see: mongodb-3.4.4-r0 x86_64 {mongodb} (AGPL3) [installed] grep "mongo" 我看到: mongodb-3.4.4-r0 x86_64 {mongodb} (AGPL3) [已安装]

After doing some more research and digging, I ended up installing PECL on the server.在做了更多的研究和挖掘之后,我最终在服务器上安装了 PECL。

Installing PECL on Alpine:在 Alpine 上安装 PECL:

apk update && apk upgrade
apk add --no-cache php7-pear php7-dev gcc musl-dev make

Once PECL was installed, I ran this command:安装 PECL 后,我运行以下命令:

sudo pecl install mongodb

after mongodb was installed I added "extension=mongodb.so" inside /usr/local/etc/php/conf.d/20_mongodb.ini安装mongodb后,我在/usr/local/etc/php/conf.d/20_mongodb.ini中添加了“extension=mongodb.so”

and finally I restarted the docker container.最后我重新启动了 docker 容器。

After taking all these steps, I could see Mongodb installed and enabled by looking at phpinfo()完成所有这些步骤后,我可以通过查看 phpinfo() 看到安装并启用了 Mongodb

Now when I run:现在当我运行时:

php -i | grep mongo

I see我懂了

mongodb
libmongoc bundled version => 1.17.0

I am assuming the latest Mongodb(libmongoc) is the PHP package vs the "MongoDB shell version v3.4.4" which is the server level package.我假设最新的 Mongodb(libmongoc) 是 PHP 包,而“MongoDB shell version v3.4.4”是服务器级包。

I hope someone will find this information helpful.我希望有人会发现这些信息很有帮助。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM