Overview
MongoDB PHP库是MongoDB PHP扩展的高级抽象,您可以使用它来连接到MongoDB并与部署中存储的数据交互。 本指南向您展示如何创建一个应用程序,使用MongoDB PHP库连接到MongoDB Atlas上托管的MongoDB 集群并查询集群中的数据。
提示
MongoDB Atlas 是完全托管的云数据库服务,旨在托管您的 MongoDB 部署。您可以按照本指南中的步骤创建您的免费(无需信用卡)MongoDB Atlas 部署。
按照本指南将示例 PHP 应用程序连接到 MongoDB Atlas 部署。如果您希望使用其他驱动程序或编程语言连接到 MongoDB,请参阅我们的 官方驱动程序列表。
下载并安装
安装MongoDB PHP扩展
运行以下命令安装 mongodb PHP扩展:
pie install mongodb/mongodb-extension
提示
指定PHP扩展版本
要安装特定版本的PHP扩展,请包含版本号,如以下命令所示:
pie install mongodb/mongodb-extension:^2.1.4
要安装 v1.21 之前的PHP扩展版本,必须使用pecl 命令。
完成这些步骤后,您就拥有了一个新的项目目录、一个新的应用程序文件以及安装的库依赖项。
创建 MongoDB 部署
您可以在 MongoDB Atlas 上创建一个免费套餐 MongoDB 部署来存储和管理您的数据。MongoDB Atlas 在云端托管和管理您的 MongoDB 数据库。
在 Atlas 上创建免费的 MongoDB 部署
完成MongoDB指南,设立新的Atlas帐户并将示例数据加载到新的免费套餐MongoDB部署。按照 Cloud Deployment 标签页中的说明在云中创建MongoDB Atlas部署。
完成这些步骤后,您就在 Atlas 上有了一个新的免费套餐 MongoDB 部署、数据库用户档案以及加载到数据库中的示例数据。
创建连接字符串
您可以通过提供连接 URI(也称为连接字符串)来连接到 MongoDB 部署,它指示驱动程序如何连接到 MongoDB 部署以及连接时的行为方式。
连接字符串包含部署的主机名或 IP 地址和端口、身份验证机制、用户档案(如果适用)以及连接选项。
要连接到未托管在Atlas上的实例或部署,请参阅选择连接目标。
查找 MongoDB Atlas 连接字符串
要检索您在上一步中创建的部署的连接字符串,登录您的Atlas帐户并导航到Database部分,然后单击新部署的Connect按钮。

然后,从Select database user选择菜单中选择您的用户。 从 选择菜单中选择“PHP”,然后从Driver Version选择菜单中选择与您安装的版本最匹配的版本。
在 Add connection string into your application code 步骤中选择 String标签页,仅查看连接string 。
完成这些步骤后,您就拥有了与string Atlas集群对应的连接 。
运行示例查询
检索 部署的连接string MongoDB Atlas后,您可以从 应用程序连接到该部署并查询PHP Atlas示例数据集。
编辑PHP应用程序文件
将以下代码复制并粘贴到quickstart.php文件中,该文件将查询sample_mflix数据库中的movies集合:
require __DIR__ . '/../vendor/autoload.php'; $uri = getenv('MONGODB_URI') ?: throw new RuntimeException( 'Set the MONGODB_URI environment variable to your Atlas URI', ); $client = new MongoDB\Client($uri); $collection = $client->sample_mflix->movies; $filter = ['title' => 'The Shawshank Redemption']; $result = $collection->findOne($filter); if ($result) { echo json_encode($result, JSON_PRETTY_PRINT); } else { echo 'Document not found'; }
完成这些步骤后,您就拥有一个PHP应用程序,它可以连接到MongoDB 部署、对示例数据运行查询并返回匹配的文档。
后续步骤
恭喜您完成快速入门教程!
注意
如果您在此步骤中运行问题,请使用此页面右侧或右下角的 Rate this page标签页提交反馈。
您可以使用MongoDB Stack Overflow标签 或MongoDB Reddit Community 寻求一般问题的支持。
在本教程中,您创建了一个PHP应用程序,该应用程序连接到MongoDB Atlas上托管的MongoDB 部署,并检索与查询匹配的文档。
通过以下资源了解详情有关MongoDB PHP库的更多信息:
在连接到MongoDB部分了解如何配置MongoDB连接。
在增删改查操作部分了解如何执行读取和写入操作。
故障排除
本节将解决您在安装PHP库及其依赖项时可能遇到的问题。
未找到 PHP 标头
安装PHP库时,您可能会看到类似于以下代码的头文件错误:
/private/tmp/pear/install/mongodb/php_phongo.c:24:10: fatal error: 'php.h' file not found #include <php.h> ^~~~~~~
此错误表明 PHP 的构建系统找不到必要的标头。所有PHP扩展都需要标头才能编译。这些标头必须与将使用扩展的PHP运行时相对应。phpize 命令由 pecl 和 pie 调用,通常确保使用正确的标头构建扩展。
如果安装了PHP运行时,相应的标头并不总是自动可用。在许多Linux发行版上,标头通常在单独的 php-dev 或 php-devel包下发布。在 macOS 上,默认PHP运行时不包含标头。用户通常必须使用Homebrew安装PHP及其标头。
安装多个 PHP 运行时
如果您的系统安装了多个版本的PHP ,则每个版本都有自己的 pecl、pie 和 phpize 命令。此外,每个PHP运行时可能有针对每个服务器应用程序编程接口 (SAPI)(例如 FPM 和CLI)的单独 php.ini 文件。如果您安装了扩展,但在运行时不可用,请确保使用正确的 pecl 或 pie 命令并修改相应的 php.ini文件。
要查看PHP运行时使用哪个 php.ini 文件,请查看该特定 SAPI 的 phpinfo() 输出。此外,您可以使用 php_ini_loaded_file() 和 php_ini_scanned_files() 来确定PHP已加载哪些 INI 文件。
要在未加载扩展时调试问题,可以使用工具目录中提供的 detect-extension脚本。您可以从CLI运行此脚本,或将其包含在可供 Web服务器使用的脚本中。该工具可查找系统的潜在问题和安装说明。如果使用 Composer 安装了该库,则可以从供应商目录中调用脚本,如以下代码所示:
php vendor/mongodb/mongodb/tools/detect-extension.php
如果要检查 Web服务器SAPI 的配置,请将该文件包含在可供 Web服务器使用的脚本中,并在浏览器中打开它。确保将脚本包装在 <pre> 标记中,以正确格式化其输出,如以下代码所示:
<pre> require(...); </pre>
在 Windows 上加载不兼容的 DLL
Windows二进制文件可用于PHP版本、线程安全设置(Typescript或 NTS)和架构类型(x86 或 x64)的多种组合。 未能选择正确的二进制文件会导致尝试在运行时加载扩展 DLL 时出错,如以下示例输出所示:
PHP Warning: PHP Startup: Unable to load dynamic library 'mongodb'
确保您已下载与以下 PHP 运行时属性相对应的 DLL:
PHP 版本 (
PHP_VERSION)线程安全 (
PHP_ZTS)架构 (
PHP_INT_SIZE)
除了前面的常量之外,这些属性还可以从 phpinfo() 推断出。如果您的系统安装了多个PHP运行时,请查看正确环境的 phpinfo() 输出。
您还可以使用上一节中描述的 detect-extension脚本来确定适合您的PHP环境的正确 DLL。
