Docs Menu
Docs Home
/ / /
PHP ライブラリ マニュアル

MongoDB に接続する

項目一覧

  • Overview
  • サンプル アプリケーション
  • 接続
  • Atlas
  • ローカル配置
  • レプリカセット
  • トランスポート層セキュリティ (TLS)
  • TLS の有効化
  • 証明機関(CA)ファイルの指定
  • OCSP チェックの無効化
  • 証明書失効リスト(CRL)の指定
  • クライアント証明書の提示
  • 証明書鍵ファイルのパスワードの指定
  • AllowInsecureTls
  • 証明書検証の無効化
  • ホスト名検証を無効化する
  • Stable API

このページには、 PHPアプリケーションをさまざまな設定でMongoDBに接続する方法を示すコード例が含まれています。

Tip

このページの接続オプションの詳細については、各セクションに記載されているリンクを参照してください。

このページの接続例を使用するには、コード例をサンプルアプリケーションまたは 独自のアプリケーションにコピーします。 <hostname>など、コード例にあるすべてのプレースホルダーを、 MongoDBデプロイに関連する値に置き換えてください。

次のサンプルアプリケーションを使用して、このページのコード例をテストできます。 サンプル アプリケーションを使用するには、次の手順を実行します。

  1. プロジェクトにMongoDB PHPライブラリがインストールされていることを確認してください。 MongoDB PHPライブラリのインストールの詳細については、「 ダウンロードとインストールガイド」を参照してください。

  2. 次のコードをコピーし、新しい.phpファイルに貼り付けます。

  3. このページからコード例をコピーし、 ファイル内の指定された行に貼り付けます。

1<?php
2
3require __DIR__ . '/../vendor/autoload.php';
4
5// Start example code here
6
7// End example code here
8
9try {
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()RFC3986 で指定されている URI構文に従ってこれらの値をエンコードするには、 メソッドを使用します。 。ユーザー名やパスワードをオプション配列パラメータでMongoDB\Clientコンストラクターに渡す場合、パーセント エンコードしないでください。

次のコードは、 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'になります。

ローカル配置への接続の詳細については、 接続ターゲットガイドの「ローカル配置」を参照してください。

次のコードは、レプリカセット配置に接続する方法を示しています。

$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);

Tip

1 つのホストがダウンしたときにレプリカセット配置への接続を維持するには、接続 URI に複数のレプリカセットノードを指定できます。

レプリカセットへの接続の詳細については、 接続ターゲットガイドの「レプリカセット」を参照してください。

次のコードは、 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を有効にする 」を参照してください。

次のコードは、 MongoDBインスタンスへの接続用の CAファイルへのパスを指定する方法を示しています。

$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 エンドポイントに接続するのを防ぐ方法を示しています。

$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 に対してサーバーの証明書を検証するようにドライバーに指示する方法を示しています。

$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);

重要

<password>接続 URI で プレースホルダーを置き換えるときは、 パーセント エンコード していることを確認してください 値。

キーファイルのパスワードの指定の詳細については、 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 の許可」を参照してください。

次のコードは、 MongoDBインスタンスへの接続に対して Stable APIを有効にする方法を示しています。

$driverOptions = ['serverApi' => new MongoDB\Driver\ServerApi('1')];
$client = new MongoDB\Client(
'mongodb://<hostname>:<port>/',
[],
$driverOptions,
);

Stable APIの詳細については、「 Stable APIガイド」を参照してください。

戻る

次のステップ