连接至 MongoDB
在此页面上
Overview
本页包含的代码示例展示了如何使用各种设置将PHP应用程序连接到MongoDB 。
提示
要了解有关此页面上的连接选项的更多信息,请参阅每个部分中提供的链接。
要使用此页面中的连接示例,请将代码示例复制到示例应用程序或您自己的应用程序中。 确保将代码示例中的所有占位符(例如 <hostname>
)替换为MongoDB 部署的相关值。
示例应用程序
您可以使用以下示例应用程序来测试本页上的代码示例。 要使用示例应用程序,请执行以下步骤:
确保您已在项目中安装MongoDB PHP库。 要学习;了解有关安装MongoDB PHP库的更多信息,请参阅下载和安装指南。
复制以下代码并将其粘贴到新的
.php
文件中。从此页面复制代码示例,并将其粘贴到文件中的指定行。
1 2 3 require __DIR__ . '/../vendor/autoload.php'; 4 5 // Start example code here 6 7 // End example code here 8 9 try { 10 $client->test->command(['ping' => 1]); 11 echo 'Successfully pinged the MongoDB server.', PHP_EOL; 12 } catch (MongoDB\Driver\Exception\RuntimeException $e) { 13 printf("Failed to ping the MongoDB server: %s\n", $e->getMessage()); 14 }
重要
百分比编码
您必须 对 进行百分号编码 用户名和密码,然后再将其包含在MongoDB URI 中。您可以使用rawurlencode()
方法根据 RFC 中指定的3986 URI 语法对这些值进行编码 。在将用户名或密码通过选项大量参数传递给MongoDB\Client
构造函数时,不要对用户名或密码进行百分号编码。
连接
Atlas
以下代码显示了如何连接到MongoDB Atlas部署:
$uri = '<Atlas connection string>'; $client = new MongoDB\Client($uri);
要学习;了解有关连接到Atlas部署的更多信息,请参阅连接目标指南中的Atlas 。
本地部署
以下代码显示了如何连接到本地MongoDB 部署:
$uri = 'mongodb://localhost:27017/'; $client = new MongoDB\Client($uri);
注意
如果不指定$uri
参数,则连接 URI 默认为'mongodb://127.0.0.1:27017'
。
要学习;了解有关连接到本地部署的更多信息,请参阅连接目标指南中的本地部署。
副本集(Replica Set)
以下代码显示了如何连接到副本集部署:
$client = new MongoDB\Client( 'mongodb://<replica set member>:<port>/', ['replicaSet' => '<replica set name>'], );
$uri = 'mongodb://<replica set member>:<port>/?replicaSet=<replica set name>'; $client = new MongoDB\Client($uri);
提示
要在一台托管关闭时保持与副本集部署的连接,可以在连接 URI 中提供多个副本集成员。
要学习;了解有关连接到副本集的更多信息,请参阅《连接目标》指南中的副本集。
传输层安全性 (TLS)
启用 TLS
以下代码展示了如何为MongoDB实例的连接启用TLS:
$client = new MongoDB\Client( 'mongodb://<hostname>:<port>/', ['tls' => true], );
$uri = 'mongodb://<hostname>:<port>/?tls=true'; $client = new MongoDB\Client($uri);
要学习;了解有关启用 TLS 的更多信息,请参阅 TLS 配置指南中的启用 TLS 。
指定证书颁发机构 (CA) 文件
以下代码演示如何指定 CA文件的路径以连接到MongoDB实例:
$client = new MongoDB\Client( 'mongodb://<hostname>:<port>/', ['tls' => true, 'tlsCAFile' => '/path/to/ca.pem'], );
$uri = 'mongodb://<hostname>:<port>/?tls=true&tlsCAFile=/path/to/ca.pem'; $client = new MongoDB\Client($uri);
要学习;了解有关指定 CA文件的更多信息,请参阅 TLS 配置指南中的指定 CA 文件。
禁用 OCSP 检查
以下代码演示如何阻止驾驶员联系 OCSP 端点:
$client = new MongoDB\Client( 'mongodb://<hostname>:<port>/', ['tls' => true, 'tlsDisableOCSPEndpointCheck' => true], );
$uri = 'mongodb://<hostname>:<port>/?tls=true&tlsDisableOCSPEndpointCheck=true'; $client = new MongoDB\Client($uri);
要学习;了解有关禁用 OCSP 检查的更多信息,请参阅 TLS 配置指南中的OCSP 。
指定证书撤销列表 (CRL)
以下代码演示如何指示驾驶员根据 CRL 验证服务器的证书:
$client = new MongoDB\Client( 'mongodb://<hostname>:<port>/', ['tls' => true], ['crl_file' => '/path/to/file.pem'], );
要了解有关指定 CRL 的更多信息,请参阅 TLS 配置指南中的证书吊销列表。
出示客户端证书
以下代码显示如何指定驾驶员向MongoDB 部署提供的客户端证书:
$client = new MongoDB\Client( 'mongodb://<hostname>:<port>/', ['tls' => true, 'tlsCertificateKeyFile' => '/path/to/client.pem'], );
$uri = 'mongodb://<hostname>:<port>/?tls=true&tlsCertificateKeyFile=/path/to/client.pem'; $client = new MongoDB\Client($uri);
要学习;了解有关指定客户端证书的更多信息,请参阅 TLS 配置指南中的提供客户端证书。
提供证书密钥文件密码
以下代码演示如何指定客户端证书的密码:
$client = new MongoDB\Client( 'mongodb://<hostname>:<port>/', [ 'tls' => true, 'tlsCertificateKeyFile' => '/path/to/client.pem', 'tlsCertificateKeyFilePassword' => '<password>' ], );
$uri = 'mongodb://<hostname>:<port>/?tls=true&tlsCertificateKeyFile=/path/to/client.pem&tlsCertificateKeyFilePassword=<password>'; $client = new MongoDB\Client($uri);
要学习;了解有关提供密钥文件密码的更多信息,请参阅 TLS 配置指南中的提供密钥密码。
允许不安全的 TLS
以下代码展示了如何放宽 TLS 约束,这与同时禁用证书验证和主机名验证具有相同的效果:
$client = new MongoDB\Client( 'mongodb://<hostname>:<port>/', ['tls' => true, 'tlsInsecure' => true], );
$uri = 'mongodb://<hostname>:<port>/?tls=true&tlsInsecure=true'; $client = new MongoDB\Client($uri);
要学习;了解有关允许不安全 TLS 的更多信息,请参阅 TLS 配置指南中的允许不安全 TLS 。
警告
将tlsInsecure
选项设置为true
可能会使您的应用程序面临安全风险。 启用此选项会使您的应用程序不安全,并且可能容易受到过期证书和冒充有效客户端实例的外部进程的攻击。
禁用证书验证
以下代码显示如何禁用证书验证:
$client = new MongoDB\Client( 'mongodb://<hostname>:<port>/', ['tls' => true, 'tlsAllowInvalidCertificates' => true], );
$uri = 'mongodb://<hostname>:<port>/?tls=true&tlsAllowInvalidCertificates=true'; $client = new MongoDB\Client($uri);
要学习;了解有关禁用证书验证的更多信息,请参阅 TLS 配置指南中的允许不安全的 TLS 。
禁用主机名验证
以下代码展示了如何禁用主机名验证:
$client = new MongoDB\Client( 'mongodb://<hostname>:<port>/', ['tls' => true, 'tlsAllowInvalidHostnames' => true], );
$uri = 'mongodb://<hostname>:<port>/?tls=true&tlsAllowInvalidHostnames=true'; $client = new MongoDB\Client($uri);
要学习;了解有关禁用主机名验证的更多信息,请参阅 TLS 配置指南中的允许不安全的 TLS 。
Stable API
以下代码显示了如何启用Stable API以连接到MongoDB实例:
$driverOptions = ['serverApi' => new MongoDB\Driver\ServerApi('1')]; $client = new MongoDB\Client( 'mongodb://<hostname>:<port>/', [], $driverOptions, );
要学习;了解有关 Stable API的更多信息,请参阅Stable API指南。