Wie installiere ich die Mongodb PHP Extension in Ubuntu 16.04 LTS?

27

Ich verwende Ubuntu 16.04 LTS und möchte Mongodb mit PHP verwenden. Dafür habe ich versucht

sudo apt-get install php5-mongo

Das ist genug für Ubuntu 14.04 LTS wäre genug, aber ich habe mich geirrt. Ich erhalte folgende Fehlermeldung:

E: Unable to locate package php5-mongo

Ich habe gerade die Maschine OS aktualisiert Ubuntu 16.04 LTSund wollte verwenden mongodbmit PHP 7.0.4.

Was kann ich tun, um das zu lösen?

Vikash Kumar
quelle
Ich hatte dies sudo apt-get install php7-mongoauch versucht, aber keine positiven Ergebnisse
erzielt
Wenn Sie mit PHP5-Mongo wollen, dann versuchen Sie diessudo add-apt-repository ppa:chris-lea/mongodb-drivers sudo apt-get update sudo apt-get install php5-mongo
Bhordupur
@bhordupur Dieses Repository scheint ungültig zu sein. Haben Sie auch darüber nachgedacht, dies stattdessen als Antwort zu verwenden? W: The repository 'http://ppa.launchpad.net/chris-lea/mongodb-drivers/ubuntu xenial Release' does not have a Release file. N: Data from such a repository can't be authenticated and is therefore potentially dangerous to use. N: See apt-secure(8) manpage for repository creation and user configuration details. E: Failed to fetch http://ppa.launchpad.net/chris-lea/mongodb-drivers/ubuntu/dists/xenial/main/binary-amd64/Packages 404 Not Found
Vivek Kodira
1
@VivekKodira Nein, ich habe das nicht als Antwort angegeben, da Vicky R Ubuntu 16.04 LTS verwendete, auf dem standardmäßig php7.x installiert war, während dieses PHP-Mongodb ausgeführt wurde. Ich bemerkte, dass er von 14 bis 16 kam, aber er konnte immer noch das verwenden, was ich oben kommentiert habe. Deshalb habe ich meinen Kommentar nicht als Antwort gegeben.
Bhordupur

Antworten:

52

Gehen Sie wie folgt vor, um die Mongodb-Erweiterung zu installieren:

sudo apt-get install php-mongodb
Videonauth
quelle
2
Wie ist das die akzeptierte Antwort für PHP7? Dieser Befehl auf Ubuntu 16.04 wird PHP5.6 Mongo No installieren?
Ligemer
2
@Ligemer 16.04 hat PHP7.0 als Standard-PHP, daher installieren alle Metapakete die 7.0-Version dieser.
Videonauth
ahh ja, danke für die erinnerung, ich habe php5.6 auch von einem anderen ppa installiert und nicht die gleichen pakete, die mich zum fehler geführt haben. In einer Dokumentation von Mongo heißt es, die Pecl-Erweiterung zu verwenden, die ich letztendlich verwendet habe.
Ligemer
1
Vergessen Sie nicht, den Apache-Server nach der Installation des Pakets neu zu starten.
TheKarateKid
Kann ich denselben Befehl für AWS Linux Ec2 verwenden?
151291
8

Ich bin sicher, Sie haben inzwischen eine Lösung gefunden. Ich möchte jedoch mitteilen, wie ich es gemacht habe:

Chickenchilli
quelle
6

Ich benutze PHP Version 7.0 auf Ubuntu 16.04. Ich gebe eine detaillierte Information zur Installation des Mongo-Treibers / -Clients. Zuerst habe ich mongodb manuell installiert und dann den mongodb-php Treiber dafür.

1) mongo db installieren. Geben Sie die folgenden Befehle ein:

$ 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

Führen Sie die folgenden Schritte aus, um Mongdb als Dienst ordnungsgemäß zu starten, dh Mongodb beim Systemstart automatisch zu starten:

Erstellen Sie die Datei mongodb.service in / etc / systemd / system /, indem Sie den folgenden Befehl eingeben:

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

Fügen Sie den folgenden Inhalt ein:

[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

Geben Sie dann die folgenden Befehle ein:

$ sudo systemctl start mongodb

$ sudo systemctl enable mongodb

2) Installation des mongo-php Treibers:

$ sudo pecl install mongodb

Außerdem erhalten Sie möglicherweise eine Fehlermeldung: phpize not found. Phpize ist ein Befehl, mit dem eine Build-Umgebung erstellt wird. Dieser Fehler kann zum Zeitpunkt der Installation einer PECL-Erweiterung auftreten. Um dieses Problem des nicht gefundenen Befehls phpize zu lösen, muss der Benutzer das Paket php5-dev installieren. Um es zu installieren, geben Sie den folgenden Befehl ein:

 $ sudo apt-get install php7.0-dev

Fügen Sie dann in der Datei php.ini im Verzeichnis /etc/php/7.0/apache2 die Erweiterung mongo db hinzu:

$ sudo nano /etc/php/7.0/apache2/php.ini 

Fügen Sie der Datei die folgende Zeile hinzu:

extension = mongo.so;

(Möglicherweise müssen Sie den genauen Speicherort der Datei angeben. In meinem Fall befand sich die Datei in /usr/lib/php/20151012/mongodb.so.)

Die Mongo-Datenbank wird also zusammen mit dem Treiber installiert.

3) Denken Sie jetzt daran, dass die Mongo-PHP-Klassen geändert wurden. Die meisten verfügbaren Ressourcen im Netz bieten Lösungen mit alten Klassen, die ersetzt werden. Nachfolgend finden Sie die Links, auf die Sie verweisen können:

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

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

Hier sind einige Befehle für grundlegende Datenbankoperationen:

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

So fügen Sie Daten in die Datenbank ein:

$bulk = new MongoDB\Driver\BulkWrite;

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

$bulk->insert($doc);

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

Zum Abrufen von Daten:

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

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

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

oder für PHP 7

sudo apt-get install php7.0-mongodb
Albert s
quelle
Wir haben mongodb installiert, aber der Fehler beim Laden des Jumpset im Browser lautet wie folgt: Fehler: Die MongoDB-PECL-Erweiterung wurde nicht installiert oder aktiviert
shivashankar m
0

Ich benutze dies in meiner Docker-Datei:

echo 'deb http://packages.dotdeb.org jessie all' >> /etc/apt/sources.list
echo 'deb-src http://packages.dotdeb.org jessie all' >> /etc/apt/sources.list
curl -OL https://www.dotdeb.org/dotdeb.gpg \
    && apt-key add dotdeb.gpg \
    && rm dotdeb.gpg
apt-get update -y \
    && apt-get install -y \
        php7.0 \
        php7.0-mongodb \
MauricioOtta
quelle