web-dev-qa-db-ja.com

PHP 7 MongoDBクライアント/ドライバーをインストールしますか?

PHP 7での作業を開始したいのですが、問題が1つあります...私は主にデータベースにMongoDBを使用していますが、問題はMongoDBのインストール方法がわからないことですPHPのドライバー/クライアント7。

私の現在のインストールはPHP 5.6で、私のMacではbrew install php56-mongoがトリックを行います。

誰でも私のMacまたはUbuntuインストールでこれを動作させる方法をお勧めできますか?

事前に感謝し、感謝します!

33

PHPバージョン5.99.99またはそれ以前のMongo拡張が置き換えられました:

https://pecl.php.net/package/mongo

代わりにPHPバージョン7.99.99以上の新しいものを使用してください:

https://pecl.php.net/package/mongodb

PECL/PEAR拡張機能をインストールできます 自動的に

pecl install mongodb

or手動 .

classesも変更されました:

new \MongoClient(); // legacy class!

http://php.net/manual/en/book.mongo.php を参照してください

new \MongoDB\Driver\Manager(); // new classes! 

http://php.net/manual/en/set.mongodb.php を参照してください

互換性に関する追加情報はここにあります:

https://docs.mongodb.org/ecosystem/drivers/php/#compatibility

42
Daniel W.

PHP 7をサポートするMongoDBドライバーは 12月22日リリース のみでした-brewなどのダウンストリームリポジトリは更新されていません。

更新は、現在php70-mongo brewスクリプトがないことを確認しましたが、アクティブな プルリクエスト が追加されています。

peclを使用して手動でインストールする ができます:

pecl channel-update pecl.php.net

pecl install mongodb

echo "extension=mongodb.so" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`
13
developerjack

Ubuntu 7.04 LTSでPHP 7.0をMongoDBに接続する方法は?

1)次のリンクを使用してLAMPをインストールします。 Apache2、mysql、php 7.0をインストールします。 https://www.digitalocean.com/community/tutorials/how-to-install-linux-Apache-mysql-php-lamp-stack-on-ubuntu-16-04

2)次のリンクの手順を使用して、UbuntuにMongoDBコミュニティエディションをインストールします。 http://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/

3)次のコマンドを入力して、peclからmongoDB拡張機能を取得します

Sudo apt install php-pear

4)/etc/php/Apache2/7.0のphp.iniファイルに以下を追加します

extension=mongodb.so

重要-クラスも変更されました:

new MongoClient();  //Old Class

new MongoDB\Driver\Manager(); // New Class

参照- http://php.net/manual/en/set.mongodb.php

7
Ish Kav

次のコマンドでmongodbドライバーをインストールできます。

Sudo apt-get install php-mongodb
6
Jorge Omar MH
  • まず、ここに記載されている手順に従って、MongoDBをマシンにインストールする必要があります。 https://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/
  • 次のステップは、MongoDBドライバーをインストールしてPHPで使用することです。
  • PHPバージョン5.99.99以前のMongoDBドライバーは次のとおりでした。 https://pecl.php.net/package/mongo これをインストールするには、使用する必要があります。

    Sudo apt-get install php-pear php5-dev

    Sudo pecl install mongo

  • PHP 7以降、これは新しいドライバーです https://pecl.php.net/package/mongodb 使用するには、Sudo pecl install mongodb

  • ComposerでLaravelフレームワークまたはプロジェクトを使用している場合、このライブラリは最も適切なライブラリです。 https://github.com/jenssegers/Laravel-MongoDB バージョン3.0を使用します。 0を使用してPHP 7およびLaravel 5サポートを取得し、それ以外の場合は古いバージョン2.2.2 Composerコマンドを使用します。

    作曲家にはjenssegers/mongodbが必要です

  • コンポーザなしで他のPHPフレームワークを使用している場合は、このライブラリを使用します。 https://github.com/mongodb/mongo-php-library これも上記で使用されています図書館

3
ajayarjunan

いいえ、残念ながらレガシードライバーはPHP7をサポートしていません。 コミットJIRAチケット は、これが正式に確定された場所です。

新しいPHP MongoDBドライバーを見つけることができます ここのPECLで (または GitHub )。

インストールするには、次のようにします。

pecl channel-update pecl.php.net

pecl install mongodb

echo "extension=mongodb.so" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`

新しいドライバーのドキュメントは here にあります。私はドキュメントからのメモを含めたいです:

最終的に、この拡張機能は単独で使用するためのものではありません。ユーザーは mongo-php-library などの1つ以上のユーザーランドPHPライブラリと一緒にこのドライバーを使用することを検討する必要があります。

新しいmongodbドライバー/ PHP拡張機能は、従来のmongoドライバーよりもはるかに低レベルであり、ドライバーの上に高レベルのライブラリを使用することをお勧めしますコードで直接使用するのではなく。

Mongo PHP Libraryreleases )は、PHPの公式の高レベルライブラリであり、プロジェクトでの使用が推奨されています。まだベータ版ですが、これはPHP7で前進するための最も安全で将来性のあるパスであるようです。

誰かがレガシードライバーをPHP7に移植することは可能かもしれませんが、レガシードライバーには他の多くの問題があるので、おそらくそれほど多くの必要性はありません。

2
Will

古い質問ですが、新しい優れたソリューションです。 Mongostead7 自動スクリプトを使用して、必要なものをすべてインストールします。私のためにうまく働いた。追加の作業は必要ありません。

次のように使用します。

Sudo curl -sS https://raw.githubusercontent.com/zakhttp/Mongostead7/master/mongoHomestead7.sh | Sudo sh
2
Aleksandar

答えを補完し、私のために働いたものを公開する:

1は、ランプをインストールするためにこのガイドに従いました https://www.digitalocean.com/community/tutorials/how-to-install-linux-Apache-mysql-php-lamp-stack-on-ubuntu-16 -04 (3番目の手順は、mongoクライアントのインストールにのみ必要です)

2 $ Sudo apt-get install php7.0-dev

3 $ Sudo pecl install mongodb

4 $ Sudo nano /etc/php/7.0/Apache2/php.ini

ファイルに次の行を追加します。

extension = mongo.so;

(ファイルの正確な場所を指定する必要があるかもしれません。私の場合、ファイルは/usr/lib/php/20151012/mongodb.soにありました。)

そして、これがすべてPHP 7.0のmongoクライアントをインストールするためのものです。

プランシュ・ティワリの答えを補完しています

2

私もほとんどあきらめました。 PHP 7xのMongoDBドライバーの場合、Ubuntu 18.04Peclは機能しません。代わりに、試してください:

Sudo apt-get install php-mongodb  

次に、プロジェクトフォルダーのベースにmongodbライブラリをインストールします https://docs.mongodb.com/php-library/current/tutorial/install-php-library/

composer require mongodb/mongodb
composer install

ドライバが提供する下位レベルの機能にアクセスします。

最後に、php.iniに移動して追加します

extension = mongo.so

apacheを再起動します

テストするには、これをphpファイルに追加してみてください。

<?php
     require_once __DIR__ . "/vendor/autoload.php";
     $collection = (new MongoDB\Client)->test->users;
     print_r($collection);
?>
2
FredTheWebGuy

これはPHP7のUbuntuでうまくいきました:

Sudo apt-get install php7.0-mongodb

1
Parth Vora

Ubuntu 16.04でPHPバージョン7.0を使用しています。 mongoドライバー/クライアントのインストールに関する詳細情報を提供しています。まず、mongodbを手動でインストールしてから、mongodb-phpドライバーをインストールしました。

1)mongo dbをインストールします。次のコマンドを入力します。

$ Sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927

$ echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 multiverse" | Sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list

$ Sudo apt-get update

$ Sudo apt-get install -y mongodb-org

Mongdbをサービスとして適切に起動するには、つまり、システムの起動時にMongodbを自動的に起動するには、次の手順に従います。

次のコマンドを入力して、/ etc/systemd/system /にファイルmongodb.serviceを作成します。

$ Sudo nano /etc/systemd/system/mongodb.service

次の内容を貼り付けます:

[Unit]
Description=High-performance, schema-free document-oriented database
After=network.target

[Service]
User=mongodb
ExecStart=/usr/bin/mongod --quiet --config /etc/mongod.conf

[Install]
WantedBy=multi-user.target

次に、次のコマンドを入力します。

$ Sudo systemctl start mongodb

$ Sudo systemctl enable mongodb

2)mongo-phpドライバーのインストール:

$ Sudo pecl install mongodb

また、エラーが表示される場合があります:phpizeが見つかりません。 Phpizeは、ビルド環境を作成するために使用されるコマンドです。このエラーは、pecl拡張機能のインストール時に表示される可能性があります。 phpizeコマンドが見つからないというこの問題を解決するには、ユーザーはphp5-devパッケージをインストールする必要があります。それをインストールするには、次のコマンドを入力します。

 $ Sudo apt-get install php7.0-dev

次に、/ etc/php/7.0/Apache2ディレクトリにあるphp.iniファイルに、mongo db拡張を追加します。

$ Sudo nano /etc/php/7.0/Apache2/php.ini 

ファイルに次の行を追加します。

extension = mongo.so;

(ファイルの正確な場所を指定する必要があるかもしれません。私の場合、ファイルは/usr/lib/php/20151012/mongodb.soにありました。)

そのため、mongo dbはそのドライバーとともにインストールされます。

3)mongo-phpクラスが変更されたことに注意してください。ネットで利用可能なリソースのほとんどは、置き換えられた古いクラスを使用したソリューションを提供します。参照できるリンクは次のとおりです。

http://php.net/manual/en/set.mongodb.php

http://zetcode.com/db/mongodbphp/

基本的なデータベース操作用のコマンドを次に示します。

$mng = new MongoDB\Driver\Manager(); // Driver Object created

データベースにデータを挿入するには:

$bulk = new MongoDB\Driver\BulkWrite;

$doc = ["_id" => new MongoDB\BSON\ObjectID, "data" => $someData, "info" => $someInfo];

$bulk->insert($doc);

$mng->executeBulkWrite('dbName.collectionName', $bulk);

データを取得する場合:

$query = new MongoDB\Driver\Query([]); 

$rows = $mng->executeQuery("dbName.collectionName", $query);

foreach ($rows as $row) 
    {
         echo "$row->data - $row->info\n";
    }
1
Pransh Tiwari

UBUNTU 16.0.4(07.12.2016)

pHP-MONGODBドライバーのインストール:コマンド:
-Sudo pecl install mongodb->résultat:ビルドプロセスが正常に完了しました '/usr/lib/php/20151012/mongodb.so'のインストールOK:channel://pecl.php.net/mongodb-1.2。 0構成オプション「php_ini」がphp.iniの場所に設定されていないphp.iniに「extension = mongodb.so」を追加する必要があります

                    -> la librairie se trouve dans "/usr/lib/php/20151012/mongodb.so"
            - Sudo systemctl restart Apache2.service
            https://secure.php.net/manual/en/mongodb.installation.pecl.php
            - create 2 new files called "30-mongodb.ini" in both path to add the extension to your server:
                -/etc/php/7.0/fpm/conf.d/30-mongodb.ini
                -/etc/php/7.0/cli/conf.d/30-mongodb.ini
                Commandes :
                    Sudo nano /etc/php/7.0/fpm/conf.d/30-mongodb.ini

                        -> add "extension=mongodb.so"

                    Sudo nano /etc/php/7.0/cli/conf.d/30-mongodb.ini

                        -> add "extension=mongodb.so"


            - Test if the mongodb extension is running in your server :
                Commandes :
                    php --ini

doctrineMongoDBBundleのインストール: http://symfony.com/doc/current/bundles/DoctrineMongoDBBundle/index.htmlhttp://www.doctrine-project.org/2016/06/ 09/odm-1-1-0-and-1-0-6.html

    Commandes :
        - cd
        - cd my_project_name
        - ls -a composer*
            -> résultat : composer.json  composer.lock
        - Sudo nano composer.json
        - Add to the composer.json in "require" array
            "doctrine/mongodb-odm": "^1.0",
            "doctrine/mongodb-odm-bundle": "^3.0"
        - Add to the composer.json in "require" array
            "alcaeus/mongo-php-adapter": "^1.0",
            "ext-mongo": "*"
        - Add a new array :
            "provide": 
            {
                "ext-mongo": "1.6.12"
            }
        - Move 
        Sudo cp -i /usr/lib/php/20151012/mongodb.so /etc/php/7.0/cli

ソリューションを提供するには、投稿するために少なくとも10の評判が必要です...

1
Tiri

古いPHP5コードをPHP7で動作させることに苦労している場合、検討したいソリューションの1つは https://github.com/alcaeus/mongo-php-adapter です。

アダプターライブラリを含むほとんどの場合、新しいドライバー/ライブラリアプローチを使用して、PHP7で古いPHP5コードを適切に動作させるために必要なことはすべて気付きました。

次に、コードを新しいMongoDB PHPライブラリ( https://github.com/mongodb/mongo-php-library )に移行するか、またはネイティブドライバを使用して、速度の向上を図ります。

0
Tomi