web-dev-qa-db-ja.com

クラス 'MongoClient'が見つかりません

私はこのコードを実行しようとしています:

<?php

$m = new MongoClient("mongodb://54.72.237.242"); 
$db = $m->tilbud; 

?>

同じエラーが発生するたびに:

Fatal error: Class 'MongoClient' not found in C:\xampp\htdocs\conexion.php

私はこの問題について一日中読んでいますが、何かが私の問題を解決します(私はそれが間違っていると思います)。

Php_mongo.dllをダウンロードし、xampp/php/extにコピーしてextension=php_mongo.dll php.iniアーカイブ内。

どちらを使用する必要があるのか​​わからないため、さらに4つのdllを追加しました。

  • extension=php_mongo-1.5.4-5.5-vc11-nts
  • extension=php_mongo-1.5.4-5.5-vc11
  • extension=php_mongo-1.5.4-5.5-vc11-nts-x86_64
  • extension=php_mongo-1.5.4-5.5-vc11-x86_64

そのため、1つではなく5つの警告が表示されます。最後に、そのうちの1つが機能し、残りの4つを削除すると思います。

私が試したものは、彼らが大丈夫だと確信しています:

  • Extension_dirは正しいフォルダーを指しています。
  • 私が変更したphp.iniは、xammpがロードするものです。
  • Phpinfoはmongoについて何も表示しません。

これ以上何ができますか?

編集

私は試した

echo extension_loaded( "mongo")? "loaded\n": "ロードされていません\ n";

そして、常に「ロードされていません」と表示されます。

編集

最後に!問題はdllの名前でした。 「php_mongo.dll」である必要があり、この投稿の冒頭で述べたように、フルネームのdllをロードしようとしました。だから私は正しいDLLを変更しました(extension=php_mongo-1.5.4-5.5-vc11) ために extension=php_mongo.dllとvoilà!

MongoDBをインストールしていませんPHPドライバはこのリンクを参照してください http://www.php.net/manual/en/mongo.installation.php

ソースを更新する

Sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | Sudo tee /etc/apt/sources.list.d/mongodb.list
Sudo apt-get update

MongoDBのインストールPHP Driver

Sudo apt-get install php5-dev php5-cli php-pear -y
Sudo pecl install mongo

Php.iniファイルを開いて追加します。

extension=mongo.so

Apacheを再起動します

Sudo /etc/init.d/Apache2 restart

その他の支援情報:

これは、php.iniファイルを見つけるのに役立ちます。

php -i | grep 'Configuration File'

Ubuntuでは次のように表示されます。

Configuration File (php.ini) Path => /etc/php5/cli
Loaded Configuration File => /etc/php5/cli/php.ini

このコマンドはcli(コマンドライン)から実行するため、実際のphp.iniの場合は、cliではなくApache2フォルダーに移動してください。

38
Lukas

PHP 7がインストールされている状態でこのページに到着した場合:

MongoCLientクラスはpecl install mongoによって提供されました。ただし、pecl/mongoはphp7では使用できず、pecl/mongodbを優先して廃止されました。ただし、pecl/mongodbを使用する場合は、 MongoClient の代わりに MongoDB\Driver\Manager を使用する必要があります(ページの警告にもその旨が記載されています)。

詳細については here を参照してください。

つまり、PHP MongoDB\Driver\Manager。]の上に抽象化レイヤーが必要になります。これは mongodb/mongo-php-library で提供されます。

次のようなものをリファクタリングする必要があります。

  • \MongoClientから\MongoDB\Client
  • \MongoCollectionから\MongoDB\Collection
  • \MongoClient->selectDBから\MongoDB\Client->selectDatabase
  • \MongoClient->listDBsから\MongoDB\Client->listDatabases
    • また、出力は配列ではなくイテレータなので、iterator_to_arrayを使用する必要があります。また、結果のオブジェクトの使用方法を編集する必要があります
  • \MongoCollection->getNameから\MongoDB\Collection->getCollectionName
  • \MongoCollection->updateから\MongoDB\Collection->updateOneまたはupdateMany
  • \MongoCollection->removeから\MongoDB\Collection->deleteOne
  • \MongoCollection->batchInsertから\MongoDB\Collection->insertMany
26
shadi

ドライバーをインストールすると、たとえばphp5.6があります。

Sudo apt-get install php5.6-mongo

答えは確かに指示に従うことです。新しいmongodbオブジェクトを作成する前に来る必要がある非常に重要なrequire行がありませんでした。

<?php

require 'vendor/autoload.php';

$client = new MongoDB\Client("mongodb://localhost:27017");

そしてもちろん、指示に従ってプロジェクトのルートでこのコマンドを実行する必要があります:

composer require mongodb/mongodb
3
mcmacerson

同じエラーを取得し、解決しました。
Linux Mintを使用しています。この問題を解決するために、extension=mongo.so 2つのディレクトリ内:

  • /etc/php5/cli/php.ini
  • /etc/php5/Apache2/php.ini
3
Biswajit Panday

this ページから:

注:追加のDLL Windowsユーザーの依存関係:

この拡張機能が機能するためには、DLLファイルがWindowsシステムのPATHで利用可能である必要があります

2
M D P

pHPバージョンとdllファイルバージョンが同じである必要があります。バージョンが同じでない場合はチェックし、利用可能なdllバージョンに従ってxampp phpを更新します。

0
user3427015