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

MongoDB PHPライブラリを使い始める

MongoDB PHPライブラリは、 MongoDB PHP拡張機能の高レベルの抽象化であり、 MongoDBに接続し、配置に保存されているデータを操作するために使用できます。 このガイドでは、 MongoDB PHPライブラリを使用してMongoDB AtlasでホストされているMongoDBクラスターに接続し、クラスター内のデータをクエリするアプリケーションを作成する方法について説明します。

Tip

MongoDB Atlas は、MongoDB 配置をホストする完全管理のクラウドデータベース サービスです。このガイドの手順に従い、独自の無料(クレジット カード不要)MongoDB Atlas 配置を作成できます。

次のガイドに従って、サンプルPHPアプリケーションをMongoDB Atlas配置に接続します。 別のドライバーまたは プログラミング言語を使用してMongoDBに接続する場合は、 公式ドライバーのリストを参照してください。

1

開発を開始する前に、ローカル マシンに次の依存関係がインストールされていることを確認してください。

2

次のコマンドを実行して、 mongodb PHP拡張機能をインストールします。

pie install mongodb/mongodb-extension

Tip

PHP拡張バージョンの指定

PHP拡張機能の特定のバージョンをインストールするには、次のコマンドに示すようにバージョン番号を含めます。

pie install mongodb/mongodb-extension:^2.1.1

v1.21 より前のPHP拡張バージョンをインストールするには、PECL コマンドを使用する必要があります。

3

ルートディレクトリから、 shellで次のコマンドを実行して、このプロジェクト用に php-quickstart というディレクトリを作成します。

mkdir php-quickstart

オペレーティング システムに対応するタブを選択し、次のコマンドを実行して、 php-quickstartディレクトリにquickstart.phpアプリケーション ファイルを作成します。

cd php-quickstart
touch quickstart.php
cd php-quickstart
type nul > quickstart.php
4

MongoDB PHPライブラリをインストールするには、 php-quickstartディレクトリで次のコマンドを実行します。

composer require mongodb/mongodb

ライブラリをインストールした後、次のコードをquickstart.phpファイルの先頭に追加して、Composer のautoload.phpファイルを含めます。

<?php
require_once __DIR__ . '/vendor/autoload.php';

これらの手順を完了すると、新しいプロジェクトディレクトリ、新しいアプリケーションファイル、およびライブラリの依存関係がインストールされます。

MongoDB Atlas では無料階層の MongoDB 配置を作成して、データを保存および管理できます。 MongoDB Atlas は、MongoDB databaseをクラウドでホストおよび管理します。

1

Atlas の使用開始ガイドを完了して、新しい Atlas アカウントを設定し、サンプル データを新しい無料階層 MongoDB 配置にロードします。

2

データベースユーザーを作成 したら、そのユーザーのデータベースユーザー名とデータベースパスワードを安全な場所に保存して、後のステップで使用します。

これらの手順を完了すると、Atlas に新しい無料階層の MongoDB 配置が作成され、データベースユーザーの認証情報が作成され、データベースに サンプル データがロードされます 。

MongoDB配置に接続するには、 接続string とも呼ばれる 接続 URIMongoDB を提供します。これは、 配置に接続する方法と接続中の動作をドライバーに指示します。

接続stringには、配置のホスト名またはIPアドレスとポート、認証メカニズム、ユーザー認証情報(該当する場合)、および接続オプションが含まれます。

Atlas でホストされていないインスタンスまたは配置に接続するには、「 接続ターゲットの選択 」を参照してください。

1

前のステップ で作成した配置の接続文字列を取得するには、Atlas アカウントにログしてDatabase Connectセクションに移動し、新しい配置の [] ボタンをクリックします。

Atlas UI のクラスター セクションの接続ボタン

次に、 Select database user選択メニューからユーザーを選択します。 Driver選択メニューから「PHP」を選択し、 Version選択メニューからインストールしたバージョンに最適なバージョンを選択します。

接続stringのみを表示するには、Add connection string into your application code の手順で Stringタブを選択します。

2

次のスクリーンショットに示すように、接続文字列の右側にある ボタンをクリックして、接続stringをクリップボードにコピーします。

UIの接続 の横にあるコピーボタンstringAtlas
3

この接続stringをテキストエディタのファイルに貼り付け、<username><password> のプレースホルダーをデータベースユーザーのユーザー名とパスワードに置き換えます。

このファイルを安全な場所に保存して、次の手順で使用します。

これらの手順を完了すると、 クラスターに対応する接続string Atlasが作成されます。

配置の接続string MongoDB Atlasを取得したら、 アプリケーションから配置に接続し、PHP Atlasサンプルデータセットをクエリできます。

1

次のコードをコピーして、 quickstart.phpファイルに貼り付けます。このコードは、 sample_mflixデータベース内のmoviesコレクションをクエリします。

<?php
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';
}
2

MONGODB_URIこのガイドの「 接続文字列の作成 」ステップからコピーした接続文字列に、 環境変数を割り当てます。次のタブに示すように、 シェルコマンドを実行中か、アプリケーション内で .envファイルを作成することで、この変数を割り当てることができます。

export MONGODB_URI=<connection string>
MONGODB_URI=<connection string>
3

プロジェクトディレクトリで、次shellコマンドを実行してアプリケーションを起動します。

php quickstart.php

コマンドライン出力には、検索された映画ドキュメントの詳細が含まれます。

{
"_id": {
"$oid": "..."
},
...
"rated": "R",
"metacritic": 80,
"title": "The Shawshank Redemption",
...
}

エラーが発生した場合や出力が表示されない場合は、適切な接続stringが MONGODB_URI 環境変数に割り当てられ、サンプルデータがロードされていることを確認してください。

これらの手順を完了すると、 MongoDBデプロイに接続し、サンプルデータに対してクエリを実行し、一致するドキュメントを返すPHPアプリケーションが作成されます。

クイック スタート チュートリアルを完了しました。

注意

このチュートリアルで問題が発生した場合は、 MongoDB Community フォーラム Rate this pageでサポートを依頼するか、このページの右側または右下にある タブを使用してフィードバックを送信してください。

このチュートリアルでは、 MongoDB AtlasでホストされているMongoDBデプロイに接続し、クエリに一致するドキュメントを検索するPHPアプリケーションを作成しました。

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ランタイムに対応している必要があります。 peclpie によって呼び出される phpize コマンドは、通常、拡張機能が正しいヘッダーでビルドされることを保証します。

PHPランタイムをインストールする場合、対応するヘッダーは常に自動的に使用できるとは限りません。多くのLinuxディストリビューションでは、ヘッダーは多くの場合、別のphp-dev またはphp-devel パッケージで公開されます。 macOS では、デフォルトのPHPランタイムに ヘッダーは含まれていません。ユーザーは通常、Homebrew を使用してPHPとそのヘッダーをインストールする必要があります。

システムに複数のバージョンのPHPがインストールされている場合、各バージョンには独自の peclpiephpize コマンドが含まれます。さらに、各PHPランタイムには、FPM や CLI などのサーバーアプリケーションプログラミング インターフェース(SAPI)ごとに個別の php.ini ファイルが含まれる場合があります。拡張機能をインストールしても実行時に使用できない場合は、適切な pecl または pie コマンドを使用し、適切な php.iniファイルを変更していることを確認してください。

php.iniPHPランタイムがどの ファイルを使用するかを確認するには、その特定の SAPI の sphereinfo() の出力を表示します。さらに、 pp_in_loaded_file() ip_in_scanned_files() を使用して、 PHPによってロードされた INI ファイルを判断することもできます。

拡張機能が読み込まれていない場合に問題をデバッグするには、 ツールディレクトリで提供されている detect-extensionスクリプトを使用できます。このスクリプトは CLI から実行することも、 ウェブサーバーで使用可能なスクリプトに含めることもできます 。このツールは、システムの潜在的な問題とインストール手順を検索します。 Composer を使用してライブラリをインストールした場合は、次のコードに示すように、ベンダーディレクトリからスクリプトを呼び出すことができます。

php vendor/mongodb/mongodb/tools/detect-extension.php

ウェブサーバーSAPI の構成を確認するには、ウェブサーバーで使用可能なスクリプトにファイルを含め、ブラウザで開きます。次のコードに示すように、出力を適切に形式ために、スクリプトを<pre> タグでラップしていることを確認してください。

<pre><?php require(...); ?></pre>

Windowsバイナリは、 PHPバージョン、スレッドセーフ設定(TS または NTS)、アーキテクチャ タイプ(x86 または x64)のいくつかの組み合わせで利用できます。正しいバイナリを選択しないと、次のサンプル出力に示すように、実行時に拡張 DDL をロードしようとする際にエラーが発生します。

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

次の PHP ランタイム プロパティに対応するDLL をダウンロードしたことを確認してください。

  • PHP バージョン( PHP_VERSION

  • スレッドの安全性( PHP_ZTS

  • アーキテクチャ( PHP_INT_SIZE

前述の定数に加えて、これらのプロパティは sphereinfo() から推論することもできます。システムに複数のPHPランタイムがインストールされている場合は、正しい環境でphpinfo() の出力を表示してください。

前のセクションで説明した detect-extensionスクリプトを使用して、 PHP環境に適したDLLを決定することもできます。

戻る

MongoDB PHP ライブラリ