Overview
MongoDB PHPライブラリは、 MongoDB PHP拡張機能の高レベルの抽象化であり、 MongoDBに接続し、配置に保存されているデータを操作するために使用できます。 このガイドでは、 MongoDB PHPライブラリを使用してMongoDB AtlasでホストされているMongoDBクラスターに接続し、クラスター内のデータをクエリするアプリケーションを作成する方法について説明します。
Tip
MongoDB Atlas は、MongoDB 配置をホストする完全管理のクラウドデータベース サービスです。このガイドの手順に従い、独自の無料(クレジット カード不要)MongoDB Atlas 配置を作成できます。
次のガイドに従って、サンプルPHPアプリケーションをMongoDB Atlas配置に接続します。 別のドライバーまたは プログラミング言語を使用してMongoDBに接続する場合は、 公式ドライバーのリストを参照してください。
ダウンロードとインストール
MongoDB PHP拡張機能をインストールします。
次のコマンドを実行して、 mongodb PHP拡張機能をインストールします。
pie install mongodb/mongodb-extension
Tip
PHP拡張バージョンの指定
PHP拡張機能の特定のバージョンをインストールするには、次のコマンドに示すようにバージョン番号を含めます。
pie install mongodb/mongodb-extension:^2.1.8
v1.21 より前のPHP拡張バージョンをインストールするには、pipeline コマンドを使用する必要があります。
これらの手順を完了すると、新しいプロジェクトディレクトリ、新しいアプリケーションファイル、およびライブラリの依存関係がインストールされます。
MongoDB 配置の作成
MongoDB Atlas では無料階層の MongoDB 配置を作成して、データを保存および管理できます。 MongoDB Atlas は、MongoDB databaseをクラウドでホストおよび管理します。
Atlas に無料のMongoDB配置を作成します。
MongoDB の使用開始ガイドを完了して、新しい Atlas アカウントを設定し、サンプルデータを新しい無料階層の MongoDB 配置にロードします。Cloud Deployment タブの手順に従って、クラウドにMongoDB Atlasの配置を作成します。
これらの手順を完了すると、Atlas に新しい無料階層の MongoDB 配置が作成され、データベースユーザーの認証情報が作成され、データベースに サンプル データがロードされます 。
接続文字列の作成
MongoDB配置に接続するには、 接続string とも呼ばれる 接続 URIMongoDB を提供します。これは、 配置に接続する方法と接続中の動作をドライバーに指示します。
接続stringには、配置のホスト名またはIPアドレスとポート、認証メカニズム、ユーザー認証情報(該当する場合)、および接続オプションが含まれます。
Atlas でホストされていないインスタンスまたは配置に接続するには、「 接続ターゲットの選択 」を参照してください。
MongoDB Atlas接続文字列を見つけます。
Clusters前のステップで作成した配置の接続文字列を取得するには、AtlasDatabase アカウントにログし、Connect セクションの下の ページに移動します。新しい配置で ボタンをクリックします。

データベースユーザーをまだ設定していない場合、 MongoDB は新しいユーザーを作成して設定するように要求します。
Connect to your application セクションの下の Drivers ボタンをクリックし、Driver 選択メニューから「PHP」を選択し、Version 選択メニューからインストールしたバージョンに最適化されたバージョンを選択します。
接続文字列のみを表示するには、View full code sample オプションが選択されていないことを確認します。
これらの手順を完了すると、 クラスターに対応する接続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'; }
接続文字列を割り当てます。
MONGODB_URIこのガイドの「 接続文字列の作成 」ステップからコピーした接続文字列に、 環境変数を割り当てます。次のタブに示すように、 シェルコマンドを実行中か、アプリケーション内で .envファイルを作成することで、この変数を割り当てることができます。
export MONGODB_URI=<connection string>
MONGODB_URI=<connection string>
PHPアプリケーション を実行します。
プロジェクトディレクトリで、次shellコマンドを実行してアプリケーションを起動します。
php quickstart.php
コマンドライン出力には、検索された映画ドキュメントの詳細が含まれます。
{ "_id": { "$oid": "..." }, ... "rated": "R", "metacritic": 80, "title": "The Shawshank Redemption", ... }
エラーが発生した場合や出力が表示されない場合は、適切な接続stringが MONGODB_URI 環境変数に割り当てられ、サンプルデータがロードされていることを確認してください。
これらの手順を完了すると、 MongoDBデプロイに接続し、サンプルデータに対してクエリを実行し、一致するドキュメントを返すPHPアプリケーションが作成されます。
次のステップ
クイック スタート チュートリアルを完了しました。
注意
この手順で問題が発生した場合は、このページの右側または右下にある Rate this pageタブを使用してフィードバックを送信してください。
MongoDB Stack Overflowタグ または MongoDB Reddit Community を使用して、一般的な質問のサポートを見つけることができます。
このチュートリアルでは、 MongoDB AtlasでホストされているMongoDBデプロイに接続し、クエリに一致するドキュメントを検索するPHPアプリケーションを作成しました。
MongoDB PHPライブラリの詳細については、次のリソースを参照してください。
「 MongoDBへの接続 」セクションで、 MongoDB接続を構成する方法について学びます。
「CRUD操作」セクションでは、読み取りおよび書込み (write) 操作の実行方法を学びます。
トラブルシューティング
このセクションでは、 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ランタイムに対応している必要があります。pecl と pie によって呼び出される phpize コマンドは、通常、拡張機能が正しいヘッダーでビルドされることを保証します。
PHPランタイムをインストールする場合、対応するヘッダーは常に自動的に使用できるとは限りません。多くのLinuxディストリビューションでは、ヘッダーは多くの場合、別の php-dev または php-develパッケージで公開されます。macOS では、デフォルトのPHPランタイムに ヘッダーは含まれていません。ユーザーは通常、Homebrew を使用してPHPとそのヘッダーをインストールする必要があります。
複数の PHP ランタイムがインストール
システムに複数のバージョンのPHPがインストールされている場合、各バージョンには独自の pecl、pie、phpize コマンドが含まれます。さらに、各PHPランタイムには、FPM や CLI などのサーバーアプリケーションプログラミング インターフェース(SAPI)ごとに個別の php.ini ファイルが含まれる場合があります。拡張機能をインストールしても実行時に使用できない場合は、適切な pecl または pie コマンドを使用し、適切な php.iniファイルを変更していることを確認してください。
php.iniPHPランタイムがどの ファイルを使用するかを確認するには、その特定の SAPI の sphereinfo() の出力を表示します。さらに、php_ini_loaded_file() と php_ini_scanned_files() を使用して、 PHPによってロードされた INI ファイルを判断することもできます。
拡張機能が読み込まれていない場合に問題をデバッグするには、 ツールディレクトリで提供されている detect-extensionスクリプトを使用できます。このスクリプトは CLI から実行することも、 ウェブサーバーで使用可能なスクリプトに含めることもできます 。このツールは、システムの潜在的な問題とインストール手順を検索します。Composer を使用してライブラリをインストールした場合は、次のコードに示すように、ベンダーディレクトリからスクリプトを呼び出すことができます。
php vendor/mongodb/mongodb/tools/detect-extension.php
ウェブサーバーSAPI の構成を確認するには、ウェブサーバーで使用可能なスクリプトにファイルを含め、ブラウザで開きます。次のコードに示すように、出力を適切に形式ために、スクリプトを<pre> タグでラップしていることを確認してください。
<pre> require(...); </pre>
Windows への互換性のない DDL のロード
Windowsバイナリは、 PHPバージョン、スレッドセーフ設定(Typescriptまたは 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を決定することもできます。
