Debian Jessieでは、Apache2 --version "0.91-ubuntu1"、PHP 5.6.30。
トピックを検索するときに、すでに回答されている質問の多くを試しました。
1)MongoDBを手動でインストールしましたPHP Driver http://php.net/manual/en/mongodb.installation.manual.php
2)動作するかどうかを確認するために、testMongo.phpファイルを作成して追加しました
<?php phpinfo(); ?>
3)ブラウザでtestMongo.phpを実行すると、設定ファイルが見つかります。
/etc/php5/Apache2/php.ini
4)次のコマンドを使用して、mongo.soファイルを見つけることができます
php -i | grep extension_dir
5)出力は次のとおりです。
extension_dir =>/usr/lib/php5/20131226 =>/usr/lib/php5/20131226
6)このファイルで、「動的拡張」の直後に追加しました
extension =/usr/lib/php5/20131226/mongo.so
7)次に Composer に移動し、コマンドラインインストールを行いました
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('SHA384', 'composer-setup.php') === '544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
8)Composerがインストールされたら、試してみました:
php composer.phar require mongodb/mongodb
ただし、これにより次のメッセージが表示されます。
Problem 1
- mongodb/mongodb 1.2.0 requires ext-mongodb ^1.3.0 -> the requested PHP extension mongodb is missing from your system.
- mongodb/mongodb 1.2.0 requires ext-mongodb ^1.3.0 -> the requested PHP extension mongodb is missing from your system.
- mongodb/mongodb 1.2.0 requires ext-mongodb ^1.3.0 -> the requested PHP extension mongodb is missing from your system.
- Installation request for mongodb/mongodb ^1.2 -> satisfiable by mongodb/mongodb[1.2.0].
投稿で言及した一部のフェローが使用できると--ignore-platform-reqs動作します!
実行すると:
#php5 index.php$ client = new MongoDB\Client(<mongo-atlasへの接続>)// Pythonで動作します
次のエラーが発生します。
PHP Fatal error: Class 'MongoDB\Driver\Manager'
not found in /var/www/vendor/mongodb/mongodb/src/Client.php on line 83
Composerが正しい答えを提供しています。間違ったライブラリを使用しています。 --ignore-platform-reqsを使用しないでください。強制的にインストールすることもできます。あなたが今する必要があるのは、どのライブラリがあなたのphpバージョンに適合するかをチェックすることです。書く
php --version
どちらを使用しているかわからない場合。出力は次のようになります。
PHP 5.6.30-0+deb8u1 (cli) (built: Feb 8 2017 09:49:20)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies
以下のリストでバージョンを確認してください。
Mongodbの説明を参照してください: PHP-Driver for mongodb
pecl にアクセスし、phpのバージョン番号に合ったバージョンをダウンロードします。
あなたの場合(PHP5.6):
$ wget https://pecl.php.net/get/mongodb-1.2.11.tgz
$ tar -xvzf mongodb-1.2.11.tgz
$ cd mongodb-1.2.11/
$ phpize
$ ./configure
$ make all -j 5
$ Sudo make install
今それは動作するはずです。
次のコードを使用して、php mongodb接続をテストできます(ObjectIdを検索)。
<?php
# filename ConnectMongo.php
require_once __DIR__ . "/vendor/autoload.php";
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
// connect to mongodb
$manager = new MongoDB\Driver\Manager('mongodb://username:password@Host');
$id = new \MongoDB\BSON\ObjectId("5a0c8e2362eb6404c2f10032");
$filter = ['_id' => $id];
$options = [];
$query = new \MongoDB\Driver\Query($filter, $options);
$rows = $manager->executeQuery('db.collection', $query);
foreach ($rows as $document) {
var_dump($document);
}
?>
ターミナルでこれを書き込んで接続をテストします:
$ php ConnectMongo.php
Composerを使用してインストールすることも確認してください。同じエラーはもう発生しないはずです。
このフラグで試すことができます:--ignore-platform-reqs