2016-01-05 3 views
5

これは私が見つけた奇妙な状況です。私はプロジェクトでPHPとMongoDBを一緒に使用しており、関連するソフトウェアを更新しました。PHPをバージョン7にアップグレードした後、なぜmongodbドライバを使用できないのですか?

Fatal error: Uncaught Error: Class 'MongoClient' not found in /srv/http/test.php

だから私の最初の本能だった:私はMongoClientクラスを使用しようとすると、私は次の致命的なエラーが出る以外アップグレードした後、---私は新しいのconfファイルを更新してくださいましたし、すべてが順調です私の/etc/php/php.iniをチェックして、mongodb.soが正しく組み込まれていることを確認してください。私は右のphp.iniファイルを使用していたことを確認するために迅速なphpinfo()スクリプトをロードし、それに

extension=mcrypt.so 
extension=zip.so 
extension=mongodb.so ; <--- here it is 

をチェックし、私はことを確認した:私は他のextension行の後にそれを発見しました。それだけでなく、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から配布物のパッケージマネージャーの代わりにインストールしようとしましたが、状況は上記と同じです。

  • Linuxカーネル4.3.3
  • PHPバージョン7.0.1
  • のphp-のMongoDBバージョン1.1.1

    • は、だからここの状況の簡単に説明ですはい、1.1.1 supports php7です。

  • mongodbが有効に設定されており、phpinfo()に表示されているようです。
  • mongodbドライバをpeclと私のディストリビューションのパッケージマネージャでインストールしようとしました。有用である可能性が

その他の情報:

  • MongoDBのバージョン3.2.0
  • mongod
  • はまた、リブート何の変化を試していない実行されています。

答えて

5

よく答えました。

クラスが変更されました。それはもはや\MongoClientではなく、今は\MongoDB\Driver\Manager

私が必要とするのはリファクタリングだけです。この新しいドライバは、ユーザーレベルのライブラリがいっぱいになるように、下位レベルのドライバとして設計されているので、php7にアップグレードする他の人は、新しいドライバに慣れていることを確認してください。あなたがそれをするとライブラリが存在します。うまくいけば、この質問/回答は今後他の人に役立つはずです。

コメンターは、以下のianazはMongoDBのためのこの良いユーザ空間ライブラリを掲載している:http://mongodb.github.io/mongo-php-library/

+1

は、彼らは深刻です!ここではユーザ空間ライブラリ:http://mongodb.github.io/mongo-php-library/。ありがとう:) – ianaz

+0

@ianaz良いコール、私は答えに追加する必要があります。 – dotVezz

関連する問題