34

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

私の現在のインストールは PHP 5.6 で、私の Macbrew install php56-mongoではうまくいきます。

MacまたはUbuntuのインストールでこれを機能させる方法を誰かに勧めることはできますか?

よろしくお願いします。

4

12 に答える 12

46

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

または 手動で

クラスも変更されました。

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

于 2015-12-29T09:38:07.073 に答える
1

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

sudo apt-get install php7.0-mongodb
于 2016-12-07T07:25:11.713 に答える
1

UBUNTU 16.0.4 (07.12.2016)

インストール PHP-MONGODB ドライバー: コマンド:
- sudo pecl install mongodb -> resultat: ビルド プロセスが正常に完了しました-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.html , http://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の評判が必要です...

于 2016-12-07T14:09:40.063 に答える
1

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 not found というエラーが表示される場合もあります。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 

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

拡張機能 = 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";
    }
于 2017-04-04T17:18:21.670 に答える