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.1
v1.21 より前のPHP拡張バージョンをインストールするには、PECL コマンドを使用する必要があります。
これらの手順を完了すると、新しいプロジェクトディレクトリ、新しいアプリケーションファイル、およびライブラリの依存関係がインストールされます。
MongoDB 配置の作成
MongoDB Atlas では無料階層の MongoDB 配置を作成して、データを保存および管理できます。 MongoDB Atlas は、MongoDB databaseをクラウドでホストおよび管理します。
Atlas で無料の MongoDB 配置を作成
Atlas の使用開始ガイドを完了して、新しい Atlas アカウントを設定し、サンプル データを新しい無料階層 MongoDB 配置にロードします。
これらの手順を完了すると、Atlas に新しい無料階層の MongoDB 配置が作成され、データベースユーザーの認証情報が作成され、データベースに サンプル データがロードされます 。
接続文字列の作成
MongoDB配置に接続するには、 接続string とも呼ばれる 接続 URIMongoDB を提供します。これは、 配置に接続する方法と接続中の動作をドライバーに指示します。
接続stringには、配置のホスト名またはIPアドレスとポート、認証メカニズム、ユーザー認証情報(該当する場合)、および接続オプションが含まれます。
Atlas でホストされていないインスタンスまたは配置に接続するには、「 接続ターゲットの選択 」を参照してください。
MongoDB Atlas 接続文字列を見つける
前のステップ で作成した配置の接続文字列を取得するには、Atlas アカウントにログしてDatabase Connectセクションに移動し、新しい配置の [] ボタンをクリックします。

次に、 Select database user選択メニューからユーザーを選択します。 Driver選択メニューから「PHP」を選択し、 Version選択メニューからインストールしたバージョンに最適なバージョンを選択します。
接続stringのみを表示するには、Add connection string into your application code の手順で 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'; }
接続文字列の割り当て
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アプリケーションが作成されます。
次のステップ
クイック スタート チュートリアルを完了しました。
注意
このチュートリアルで問題が発生した場合は、 MongoDB Community フォーラム Rate this pageでサポートを依頼するか、このページの右側または右下にある タブを使用してフィードバックを送信してください。
このチュートリアルでは、 MongoDB AtlasでホストされているMongoDBデプロイに接続し、クエリに一致するドキュメントを検索するPHPアプリケーションを作成しました。
MongoDB PHPライブラリの詳細については、次のリソースを参照してください。
「 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.ini
PHPランタイムがどの ファイルを使用するかを確認するには、その特定の 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>require(...); </pre>
Windows への互換性のない DDL のロード
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を決定することもできます。