さて、これが私が見つけた奇妙な状況です。プロジェクトでPHPとMongoDBを一緒に使用し、関連するソフトウェアを更新しました。アップグレード後、新しいconfファイルを更新したことを確認しましたが、すべて問題ありません--- MongoClient
クラスを使用しようとすると、次の致命的なエラーが発生します。
致命的なエラー:キャッチされないエラー:クラス 'MongoClient'が/srv/http/test.phpに見つかりません
したがって、私の最初の本能は、_/etc/php/php.ini
_をチェックして、mongodb.soが正しく含まれていることを確認することでした。他のextension
行の後に見つけました:
_extension=mcrypt.so
extension=Zip.so
extension=mongodb.so ; <--- here it is
_
これがチェックされた状態で、正しいphpinfo()
スクリプトをロードして、正しい_php.ini
_ファイルを使用していることを確認し、正しいことを確認しました。それだけでなく、mongodbドライバーも正しくロードされているようです!
_Loaded Configuration File /etc/php/php.ini
mongodb support enabled
mongodb version 1.1.1
mongodb stability stable
libmongoc version 1.3.1-dev
libbson version 1.3.0
_
そこで、httpdを再起動して再試行しました。サイコロはありませんが、MongoClient
クラスが見つかりません。そのため、ディストリビューションのパッケージマネージャーの代わりにpecl
からインストールしようとしましたが、状況は上記と同じです。
それで、ここに状況の簡単な要約があります:
phpinfo()
に表示されています。pecl
と私のディストリビューションのパッケージマネージャーを使用して、mongodbドライバーをインストールしようとしました。役に立つかもしれない他の情報:
mongod
が実行されていますさて私は答えを見つけました。
クラスが変更されました。もはや\MongoClient
、現在は\MongoDB\Driver\Manager
必要なのはリファクタリングだけです。新しいドライバーは、高レベルの機能をユーザースペースライブラリで満たすための低レベルドライバーになるように設計されているため、php7にアップグレードする他のユーザーは、新しいドライバーに慣れていること、またはユーザースペースを確認してください。あなたがそれをするとき、ライブラリは存在します。うまくいけば、この質問/回答は将来他の人に役立つでしょう。
PHP now: mongo-php-library に使用する大きなMongoライブラリの1つです。
おっしゃるように、PHP7からMongoDBと対話するためのクラス構造が変更されたため、コードをリファクタリングする必要があります(最初の計画と記述方法によって大きく異なります)。
あなたが調べたいと思うかもしれない1つの解決策は https://github.com/alcaeus/mongo-php-adapter
古いPHP5コードを適切に動作させるために、ほとんどの場合、アダプタライブラリを含めるだけで十分です。
次に、コードを新しいMongoDBに移行することを強くお勧めしますPHPライブラリ( https://github.com/mongodb/mongo-php-library )または、ネイティブドライバーを使用して、速度の向上を活用することもできます。
PHPバージョン5.99.99以前のMongoDBドライバーは次のとおりでした:package/mongoこれをインストールするには使用する必要があります:
Sudo apt-get install php-pear php5-dev
Sudo pecl install mongo
PHP 7以降、これは新しいドライバーパッケージ/ mongodbです。これをインストールするには:Sudo pecl install mongodb
Laravelフレームワークまたはcomposerを使用したプロジェクトを使用している場合、このライブラリが最も適切です: https://github.com/jenssegers/Laravel-MongoDB Useバージョン3.0.0でPHP 7&Laravel 5をサポートし、それ以外の場合は古いバージョン2.2.2を使用するComposerコマンド:
composer require jenssegers/mongodb
コンポーザーなしで他のPHPフレームワークを使用している場合は、次のライブラリを使用してください: https://github.com/mongodb/mongo-php-library これは上記のライブラリ