2024年PHP开发者大会(日本)

安装

使用PECL安装MongoDB PHP扩展

有关安装此PECL扩展的信息,请参见手册中标题为PECL扩展的安装的章节。其他信息,例如新版本、下载、源文件、维护者信息和变更日志,可以在这里找到:» https://pecl.php.net/package/mongodb

Linux、Unix和macOS用户可以运行以下命令来安装扩展:

$ sudo pecl install mongodb

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

从1.17.0版本开始,PECL将提示各种configure选项。要在非交互式脚本中使用默认选项安装扩展,可以使用yes命令将空字符串输入管道输送到pecl install

$ yes '' | sudo pecl install mongodb

支持的configure选项的完整列表可以在PECL包中包含的package.xml文件中找到。要在非交互式脚本中使用特定configure选项安装扩展,可以使用pecl install--configureoptions选项

$ sudo pecl install --configureoptions='with-mongodb-system-libs="yes" enable-mongodb-developer-flags="no"' mongodb

默认情况下,通过PECL安装扩展将使用» libbson» libmongoc» libmongocrypt的捆绑版本,并尝试自动配置它们。

注意如果构建过程找不到SSL库,请检查是否安装了开发包(例如libssl-dev)和» pkg-config。如果这不能解决问题,请考虑使用手动安装过程。

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

extension=mongodb.so

在macOS上使用Homebrew安装MongoDB PHP扩展

» Homebrew 1.5.0已弃用» Homebrew/php tap并删除了各个PHP扩展的公式。今后,建议macOS用户安装» php公式,并使用Homebrew PHP安装提供的pecl命令按照标准PECL安装说明进行操作。

在Windows上安装MongoDB PHP扩展

预编译的二进制文件附加在项目的» Github releases上。为PHP版本、线程安全(TS或NTS)和架构(x86或x64)的各种组合发布了存档。确定PHP环境的正确存档并解压php_mongodb.dll文件到扩展目录(默认为“ext”)。

将以下行添加到每个需要使用该扩展的环境的php.ini文件中:

extension=php_mongodb.dll

未能选择正确的二进制文件将导致在运行时尝试加载扩展DLL时出错。

PHP Warning:  PHP Startup: Unable to load dynamic library 'mongodb'

确保下载的DLL与以下PHP运行时属性相对应:

除了上述常量之外,还可以从phpinfo()推断这些属性。如果系统安装了多个PHP运行时,请仔细检查phpinfo()输出是否属于正确的环境。

注意Windows用户的其他DLL依赖项

为了使此扩展程序正常工作,Windows系统PATH必须提供DLL文件。有关如何执行此操作的信息,请参见题为如何在Windows上将我的PHP目录添加到PATHFAQ。虽然将DLL文件从PHP文件夹复制到Windows系统目录也可以工作(因为系统目录默认情况下位于系统的PATH中),但不建议这样做。此扩展需要以下文件位于PATH中:libsasl.dll

从源代码构建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的搜索路径。

最后的构建步骤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

添加注释

用户贡献的笔记

此页面没有用户贡献的笔记。
To Top