从源代码构建 MongoDB PHP 驱动程序

对于对最新错误修复感兴趣的开发人员和用户,可以在 » Github 上从最新的源代码编译扩展程序。运行以下命令克隆并构建项目

$ git clone https://github.com/mongodb/mongo-php-driver.git
$ cd mongo-php-driver
$ git submodule update --init
$ phpize
$ ./configure
$ make all
$ sudo make install

在安装了多个 PHP 版本的系统上(例如 macOS 默认版本、Homebrew、» XAMPP),每个 PHP 版本将拥有自己的 phpize 命令和 php.ini 文件。此外,每个 PHP 环境(例如 CLI、Web)可能使用单独的 php.ini 文件。

默认情况下,扩展程序将使用捆绑版本的 » libbson» libmongoc» libmongocrypt 并尝试自动配置它们。如果这些库已经作为系统库安装,则扩展程序可以通过将 --with-mongodb-system-libs=yes 作为 configure 的选项来使用它们。

有关 configure 选项的完整列表,请运行 configure --help

当使用捆绑版本的 libmongoc 和 libmongocrypt 时,扩展程序还将尝试根据 --with-mongodb-ssl configure 选项选择 SSL 库。从扩展程序版本 1.17.0 开始,OpenSSL 始终是默认首选。以前,Secure Transport 是 macOS 上的默认选项,而 OpenSSL 是所有其他平台上的默认选项。

注意:

如果构建过程无法找到 SSL 库,请检查开发包(例如 libssl-dev)和 » pkg-config 是否都已安装。

在 macOS 上使用 Homebrew 时,系统上通常会安装多个版本的 OpenSSL。为了确保选择所需的 OpenSSL 版本,可以使用 PKG_CONFIG_PATH 环境变量来控制 pkg-config 的搜索路径。如果未使用 pkg-configconfigure 还支持 --with-openssl-dir=DIR 参数,可用于指定手动搜索路径(仅适用于 OpenSSL)。

最后的构建步骤 make install 将报告 mongodb.so 的安装位置,类似于

Installing shared extensions:     /usr/lib/php/extensions/debug-non-zts-20220829/

确保 php.ini 中的 extension_dir 选项指向 mongodb.so 所安装的目录。可以通过运行以下命令查询该选项

$ php -i | grep extension_dir
  extension_dir => /usr/lib/php/extensions/debug-non-zts-20220829 =>
                   /usr/lib/php/extensions/debug-non-zts-20220829

如果目录不同,请更改 php.ini 中的 extension_dir 或将 mongodb.so 手动移动到正确的目录。

最后,将以下行添加到将要使用该扩展程序的每个环境的 php.ini 文件中

extension=mongodb.so

添加注释

用户贡献注释 3 个注释

25
chatocoral at gmail dot com
6 年前
您觉得这太复杂了吗?您使用的是 Ubuntu 14 或 16 吗?使用以下命令:

sudo apt-get install php-mongodb

这将安装您在 PHP 中使用 MongoDB 所需的一切。

不要停止使用 MongoDB,这是您将遇到的最好的事情。

不用谢。
0
fgm at osinet dot fr
8 年前
a) 如果您的 git 版本不够新,例如在 Ubuntu 12.04 LTS 上,git submodule --init 将不存在
在这种情况下,请使用

git submodule init
git submodule update

b) make install 不会创建 mongodb.conf 配置文件来支持 Debian/Ubuntu PHP 版本的 phpenmod/phpdismod 命令。要使它们工作

- 不要将 extension=mongodb.so 行添加到 php.ini
- 将其添加到 PHP mods-available 目录中的 mongodb.ini 文件
- 然后这些命令将适用于此扩展

c) 如果您在系统上(如 b)中有多个 PHP 版本,如果扩展程序不是为默认的 PHP CLI 版本构建的,则 phpenmod/phpdismod 命令可能会失败。要为特定版本启用它,请使用 -v 参数,例如

phpenmod -v php7.1 mongodb
-2
Anisur Rahman (anisur2805 at gmail dot com)
3 年前
安装 mongodb 后,在终端中会遇到一些错误,例如

PHP Warning: PHP Startup: Unable to load dynamic library 'mongodb.so' (tried: C:\xampp\php\ext\mongodb.so (The specified module could not be found.), C:\xampp\php\ext\php_mongodb.so.dll (The specified module could not be found.)) in Unknown on line 0

Warning: PHP Startup: Unable to load dynamic library 'mongodb.so' (tried: C:\xampp\php\ext\mongodb.so (The specified module could not be found.), C:\xampp\php\ext\php_mongodb.so.dll (The specified module could not be found.)) in Unknown on line 0

https://prnt.sc/ubr5mq

解决方案
1. 如果您在 php.ini 文件中包含了 mongodb 扩展,请先将其删除
2. 转到 Xampp 中的 php 路径,创建一个名为 mongodb.ini 的文件,并将以下行粘贴到其中,请参见 ss - https://prnt.sc/ubr7ii
代码 extension=mongodb.so

此解决方案适用于 Windows 10,PHP 7.4 版本
To Top