Cara menginstal ekstensi Mongodb PHP di Ubuntu 16.04 LTS


27

Saya menjalankan Ubuntu 16.04 LTS dan saya ingin menggunakan Mongodb dengan PHP. Untuk ini saya mencoba

sudo apt-get install php5-mongo

yang cukup untuk Ubuntu 14,04 LTS akan cukup tetapi saya salah. Saya menerima pesan kesalahan sebagai:

E: Unable to locate package php5-mongo

Aku baru saja upgrade OS mesin untuk Ubuntu 16.04 LTSdan ingin menggunakan mongodbdengan PHP 7.0.4.

Jadi apa yang bisa saya lakukan untuk menyelesaikan ini?


Saya sudah mencoba ini sudo apt-get install php7-mongojuga tetapi tidak mendapat hasil positif
Vikash Kumar

jika Anda ingin dengan php5-mongo maka coba inisudo add-apt-repository ppa:chris-lea/mongodb-drivers sudo apt-get update sudo apt-get install php5-mongo
bhordupur

@bhordupur repositori ini tampaknya tidak valid. Juga, sudahkah Anda mempertimbangkan untuk membuat ini sebagai jawaban? 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 Tidak, saya tidak menjawabnya karena Vicky R menggunakan Ubuntu 16.04 LTS di mana secara default php7.x dipasang saat melakukan php-mongodb ini. Saya berkomentar bahwa karena dia datang dari 14 ke 16 tetapi dia masih bisa menggunakan apa yang saya komentari di atas. Inilah sebabnya saya tidak memberikan komentar saya sebagai jawaban.
bhordupur

Jawaban:


52

Untuk menginstal ekstensi mongodb, lakukan:

sudo apt-get install php-mongodb

2
Bagaimana ini jawaban yang diterima untuk php7? Perintah ini di ubuntu 16.04 akan menginstal php5.6 mongo no?
Ligemer

2
@Ligemer 16.04 memiliki php7.0 sebagai PHP default, oleh karena itu semua paket meta menginstal versi 7.0 dari kata tersebut.
Videonauth

ahh ya, terima kasih atas pengingatnya, saya juga menginstal php5.6 dari ppa lain dan bukan paket yang sama yang menyebabkan saya melakukan kesalahan. Beberapa dokumentasi dari mongo mengatakan untuk menggunakan ekstensi pecl yang akhirnya saya gunakan.
Ligemer

1
Jangan lupa untuk me-restart server Apache setelah menginstal paket.
TheKarateKid

Bisakah saya menggunakan perintah yang sama untuk AWS Linux Ec2?
151291


6

Saya menggunakan php versi 7.0 di ubuntu 16.04. Saya memberikan info terperinci untuk menginstal driver / klien mongo. Pertama saya menginstal mongodb secara manual dan kemudian driver mongodb-php untuknya.

1) Memasang mongo db. Masukkan perintah berikut:

$ 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

Untuk meluncurkan Mongdb sebagai layanan dengan benar, yaitu memulai Mongodb secara otomatis ketika sistem dimulai, ikuti langkah-langkah berikut:

Buat file mongodb.service di / etc / systemd / system / dengan memasukkan perintah:

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

Rekatkan konten berikut di dalamnya:

[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

Kemudian masukkan perintah berikut:

$ sudo systemctl start mongodb

$ sudo systemctl enable mongodb

2) Menginstal driver mongo-php:

$ sudo pecl install mongodb

Anda juga mungkin menerima kesalahan: phpize tidak ditemukan. Phpize adalah perintah yang digunakan untuk membuat lingkungan build. Kesalahan ini dapat muncul pada saat pemasangan ekstensi pecl. Untuk mengatasi masalah ini dari perintah phpize tidak ditemukan, pengguna harus menginstal paket php5-dev. Untuk menginstalnya masukkan perintah:

 $ sudo apt-get install php7.0-dev

Kemudian di file php.ini yang ada di direktori /etc/php/7.0/apache2, tambahkan ekstensi mongo db:

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

Tambahkan baris berikut dalam file:

ekstensi = mongo.so;

(Anda mungkin perlu menentukan lokasi pasti file tersebut. Dalam kasus saya file tersebut ada di /usr/lib/php/20151012/mongodb.so.)

Jadi mongo db diinstal bersama drivernya.

3) Sekarang perlu diingat bahwa kelas mongo-php telah diubah. Sebagian besar sumber daya yang tersedia di internet memberikan solusi menggunakan kelas lama yang digantikan. Di bawah ini adalah tautan yang dapat Anda rujuk:

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

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

Berikut adalah beberapa perintah untuk operasi basis data dasar:

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

Untuk memasukkan data ke dalam basis data:

$bulk = new MongoDB\Driver\BulkWrite;

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

$bulk->insert($doc);

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

Untuk mengambil data:

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

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

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

1

atau untuk php 7

sudo apt-get install php7.0-mongodb

kami telah menginstal mongodb tetapi kesalahan saat memuat jumpset pada browser seperti: Kesalahan: Ekstensi PECL MongoDB belum diinstal atau diaktifkan
shivashankar m

0

Saya menggunakan ini di Dockerfile saya:

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 \
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.