Mengaktifkan dan Menggunakan MongoDB di ServBay (Ekstensi PHP & Servis Pangkalan Data)
ServBay ialah persekitaran pembangunan web tempatan yang hebat direka untuk pembangun, menggabungkan pelbagai pelayan web, bahasa pengaturcaraan dan pangkalan data, serta prapasang banyak ekstensi bahasa dan alat yang biasa digunakan. Bagi pembangun PHP yang memerlukan pangkalan data MongoDB, ServBay menawarkan cara yang mudah untuk mengaktifkan ekstensi MongoDB untuk PHP dan menjalankan servis pangkalan data MongoDB.
Dokumen ini menerangkan secara terperinci cara untuk mengaktifkan ekstensi MongoDB untuk PHP dalam ServBay, memulakan servis pangkalan data MongoDB, serta bagaimana untuk menyambung dan menggunakan MongoDB dalam projek PHP anda.
Pengenalan: ServBay dan MongoDB
MongoDB adalah pangkalan data NoSQL sumber terbuka yang berprestasi tinggi dan berorientasikan dokumen. Dengan model data yang fleksibel dan kebolehskalaan yang tinggi, ia sangat popular untuk aplikasi web moden.
ServBay telah mengintegrasikan MongoDB sebagai salah satu pakej terbina, membenarkan pembangun menggunakan dan mengurus instans pangkalan data MongoDB di persekitaran tempatan dengan mudah. Selain itu, ServBay juga telah prapakej dan prapajak ekstensi MongoDB (mongodb.so
) untuk pelbagai versi PHP, membolehkan aplikasi PHP berinteraksi dengan pangkalan data MongoDB.
Untuk menggunakan MongoDB dalam projek PHP anda, terdapat dua langkah utama:
- Aktifkan ekstensi MongoDB untuk PHP — membolehkan kod PHP anda menggunakan fungsi berkaitan MongoDB.
- Mulakan servis pangkalan data MongoDB — ini adalah proses MongoDB yang berfungsi untuk menyimpan dan mengurus data anda.
ServBay memudahkan kedua-dua langkah ini melalui antara muka grafik pengguna (GUI) yang intuitif.
Versi Ekstensi MongoDB untuk PHP
ServBay menyertakan ekstensi MongoDB yang sesuai untuk pelbagai versi PHP yang disokongnya. Versi spesifik ekstensi mungkin berbeza mengikut kemas kini ServBay, tetapi secara amnya adalah versi stabil dan serasi dengan PHP. Berikut ialah padanan biasa versi PHP dan MongoDB ekstensi dalam ServBay (rujuk dokumentasi versi ServBay terkini untuk maklumat semasa):
- PHP 5.6, 7.0: MongoDB 1.7.5
- PHP 7.1, 7.2, 7.3, 7.4: MongoDB 1.11.1
- PHP 8.0, 8.1, 8.2, 8.3: MongoDB 1.15.0
- PHP 8.4: MongoDB 1.19.1
Perlu diingat, ekstensi PHP (mongodb.so
) hanya menyediakan keupayaan komunikasi asas antara PHP dan MongoDB. Untuk interaksi sebenar dalam kod PHP, anda biasanya perlu memasang Pemandu PHP MongoDB rasmi melalui Composer.
Mengaktifkan Ekstensi MongoDB untuk PHP
Secara lalai, beberapa ekstensi PHP dalam ServBay mungkin tidak diaktifkan untuk menjimatkan sumber. Cara paling disarankan untuk mengaktifkan ekstensi MongoDB ialah melalui GUI ServBay.
Mengaktifkan Melalui GUI ServBay
Langkah paling mudah dan cepat:
- Buka aplikasi ServBay.
- Dalam panel navigasi kiri, klik Languages (Bahasa) kemudian pilih PHP.
- Pilih versi PHP di mana anda ingin aktifkan ekstensi MongoDB (contohnya,
PHP 8.4
). - Dalam panel sebelah kanan, cari bahagian Extensions (Ekstensi).
- Skrol ke bawah hingga jumpa ekstensi
MongoDB
. - Klik suis di sebelah kiri ekstensi
MongoDB
, tukarkan dari kelabu (dinonaktifkan) ke hijau (diaktifkan). - Klik Save (Simpan) di bahagian bawah panel.
ServBay akan secara automatik mengemaskini fail konfigurasi PHP yang berkaitan dan memulakan semula servis PHP yang terlibat supaya perubahan berkuatkuasa.
Mengedit Fail Konfigurasi Secara Manual (Pilihan)
Jika anda ingin mengkonfigurasi secara manual atau memerlukan tetapan lebih lanjut, anda boleh sunting fail konfigurasi PHP terus. Namun, biasanya operasi melalui GUI sudah mencukupi.
Cari direktori
conf.d
untuk versi PHP yang dikehendaki. Contohnya, untuk mengaktifkan ekstensi MongoDB pada PHP 8.3, jalurnya kemungkinan:bash/Applications/ServBay/etc/php/8.3/conf.d/mongodb.ini
1Sila sesuaikan mengikut jalur pemasangan ServBay dan versi PHP anda.
Buka fail
mongodb.ini
dengan penyunting teks.Cari baris berikut:
ini[MongoDB] ; Uncomment the following line to enable MongoDB ;extension = mongodb.so
1
2
3Padamkan tanda
;
di hadapan barisextension = mongodb.so
untuk mengaktifkannya:ini[MongoDB] ; Uncomment the following line to enable MongoDB extension = mongodb.so
1
2
3Simpan fail tersebut.
Penting: Selepas suntingan manual, anda mesti mulakan semula servis PHP yang berkaitan agar perubahan berkuatkuasa. Dalam GUI ServBay, klik Packages (Pakej) di panel navigasi kiri, cari versi PHP yang dikemaskini, dan klik ikon but semula (biasanya ikon anak panah bulat).
Memulakan Servis Pangkalan Data MongoDB
Mengaktifkan ekstensi PHP hanya membolehkan kod PHP berkomunikasi dengan MongoDB, tetapi anda masih perlu memulakan servis MongoDB. ServBay menyertakan MongoDB sebagai pakej, membolehkan anda memulakan servis ini dengan mudah melalui GUI.
- Buka aplikasi ServBay.
- Dalam navigasi kiri, klik Packages (Pakej).
- Dalam senarai pakej, cari kategori Databases (Pangkalan Data).
- Cari pakej
MongoDB
. - Klik suis di sebelah kiri untuk menukarkan status dari kelabu (berhenti) ke hijau (berjalan).
Servis pangkalan data MongoDB akan bermula pada port lalai 27017
.
Pengesahan Modul MongoDB & Sambungan Pangkalan Data
Selepas selesai langkah di atas, anda boleh mengesahkan sama ada ekstensi MongoDB telah dimuatkan dan servis pangkalan data MongoDB berjalan dengan baik.
Sahkan Ekstensi PHP Telah Dimuatkan
Cipta fail PHP mudah untuk semak keluaran phpinfo()
:
- Dalam direktori root laman ServBay anda (cth.
/Applications/ServBay/www
), buat fail PHP baharu sepertiphpinfo.php
. - Tambah kandungan berikut:php
<?php phpinfo(); ?>
1
2
3 - Layari fail ini melalui pelayar web, cth.
https://servbay.demo/phpinfo.php
(andaikanservbay.demo
adalah tapak yang ditetapkan ke direktoriwww
ServBay). - Dalam halaman
phpinfo
, cari "MongoDB". Jika ekstensi dimuatkan, anda akan melihat seksyen "mongodb" yang memaparkan versi dan tetapan ekstensi.
(Nota: Paparan mungkin berbeza bergantung pada versi ServBay anda)
Sahkan Sambungan ke Pangkalan Data
Cipta skrip PHP ringkas untuk cubaan sambungan ke MongoDB tempatan:
- Pastikan pemandu MongoDB PHP rasmi telah dipasang melalui Composer dalam projek anda. Jika belum, pergi ke direktori projek dan jalankan:bash
composer require mongodb/mongodb
1 - Buat fail PHP seperti
test_mongodb.php
. - Masukkan kod berikut:php
<?php require __DIR__ . '/vendor/autoload.php'; // Sesuaikan laluan mengikut struktur projek anda echo "Attempting to connect to MongoDB...\n"; try { // Sambung ke MongoDB yang berjalan secara tempatan pada port lalai 27017 $client = new MongoDB\Client("mongodb://localhost:27017"); // Cuba senaraikan pangkalan data untuk sahkan sambungan $listDatabases = $client->listDatabases(); echo "Successfully connected to MongoDB!\n"; echo "Available databases:\n"; foreach ($listDatabases as $databaseInfo) { echo "- " . $databaseInfo->getName() . "\n"; } } catch (\MongoDB\Driver\Exception\Exception $e) { echo "Failed to connect to MongoDB: " . $e->getMessage() . "\n"; } ?>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 - Jalankan skrip ini dalam terminal (menggunakan PHP versi ServBay yang betul) atau akses melalui web. Jika sambungan berjaya, anda akan melihat senarai pangkalan data. Jika gagal, mesej ralat akan membantu mendiagnosis isu (cth. servis MongoDB belum dimulakan).
Menggunakan MongoDB dalam Kod PHP
Setelah ekstensi MongoDB diaktifkan dan servis MongoDB berjalan, anda kini boleh gunakan pemandu PHP MongoDB rasmi (dipasang melalui Composer) untuk melakukan operasi pangkalan data dalam projek PHP anda.
Pemasangan Pemandu PHP MongoDB
Seperti yang disebutkan sebelum ini, gunakan Composer untuk pemasangan:
bash
composer require mongodb/mongodb
1
Ini akan memasang pakej mongodb/mongodb
serta kebergantungan lain, dan menjana fail vendor/autoload.php
.
Contoh Kod
Contoh berikut menunjukkan cara menyambung ke MongoDB, sisip dokumen, dan menjalankan query:
php
<?php
require __DIR__ . '/vendor/autoload.php'; // Pastikan fail autoload Composer dimasukkan
echo "Connecting to MongoDB...\n";
try {
// Sambung ke instans MongoDB tempatan
$client = new MongoDB\Client("mongodb://localhost:27017");
// Pilih pangkalan data dan koleksi
// Jika pangkalan data atau koleksi belum wujud, MongoDB akan ciptakan secara automatik semasa data ditulis pertama kali
$collection = $client->servbay_demo_db->users; // Guna servbay_demo_db sebagai contoh
echo "Connected. Performing operations...\n";
// Sisip dokumen
$insertResult = $collection->insertOne([
'name' => 'Alice ServBay', // Contoh data dengan nama jenama
'email' => '[email protected]',
'age' => 30,
'createdAt' => new MongoDB\BSON\UTCDateTime(time() * 1000) // Guna jenis tarikh BSON
]);
printf("Inserted document with ID: %s\n", $insertResult->getInsertedId());
// Query dokumen
$document = $collection->findOne(['name' => 'Alice ServBay']);
echo "Found document:\n";
if ($document) {
print_r($document);
} else {
echo "Document not found.\n";
}
// Kemas kini dokumen (pilihan)
$updateResult = $collection->updateOne(
['name' => 'Alice ServBay'],
['$set' => ['age' => 31, 'status' => 'updated']]
);
printf("Matched %d document(s) for update, modified %d document(s).\n", $updateResult->getMatchedCount(), $updateResult->getModifiedCount());
// Query dokumen yang telah dikemas kini (pilihan)
$updatedDocument = $collection->findOne(['name' => 'Alice ServBay']);
echo "Updated document:\n";
if ($updatedDocument) {
print_r($updatedDocument);
}
// Padam dokumen (pilihan)
// $deleteResult = $collection->deleteOne(['name' => 'Alice ServBay']);
// printf("Deleted %d document(s).\n", $deleteResult->getDeletedCount());
} catch (\MongoDB\Driver\Exception\Exception $e) {
echo "An error occurred: " . $e->getMessage() . "\n";
} catch (\Exception $e) {
echo "An unexpected error occurred: " . $e->getMessage() . "\n";
}
echo "Script finished.\n";
?>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
Simpan kod ini sebagai fail PHP dan jalankan menerusi CLI PHP ServBay atau lawatinya melalui pelayan web yang dikonfigurasi dengan ServBay.
Nota & Amalan Terbaik
- Status Servis MongoDB: Pastikan status pakej MongoDB dalam GUI ServBay adalah “berjalan” sebelum cuba sambung.
- Port Lalai: MongoDB berjalan pada port
27017
secara lalai. Jika aplikasi anda perlukan port berlainan, ubah dalam connection string. Port boleh disemak/ubah dalam GUI ServBay. - Ekstensi vs Pemandu: Ekstensi PHP
mongodb.so
menyediakan lapisan komunikasi asas, sementara pakej Composermongodb/mongodb
memberi API berorientasikan objek untuk operasi pangkalan data. Kebanyakkan aplikasi PHP moden menggunakan kedua-duanya serentak. - CA Pengguna ServBay/CA Awam: ServBay menyokong penjanaan sijil SSL melalui CA terbina. Ini membantu simulasi sambungan HTTPS dalam pembangunan tempatan. Biasanya sambungan MongoDB tempatan tidak perlukan SSL, tapi untuk konfigurasi lanjutan, boleh pertimbangkan. ServBay juga menyokong permohonan sijil benar melalui protokol ACME, sandaran data, dan set semula kata laluan pangkalan data—antara kelebihan utama ServBay untuk pembangunan menyeluruh.
- Alat Pengurusan Pangkalan Data: ServBay mungkin tidak termasuk alat GUI rasmi untuk pengurusan MongoDB, namun anda boleh muat turun MongoDB Compass atau gunakan alat baris perintah
mongo
/mongosh
untuk urus instans MongoDB ServBay anda.
Soalan Lazim (FAQ)
S: Saya sudah aktifkan ekstensi MongoDB untuk PHP tetapi skrip PHP tetap tidak boleh sambung ke MongoDB, apa perlu saya lakukan?
J: Pastikan anda telah memulakan servis pangkalan data MongoDB melalui ServBay GUI. Ekstensi PHP hanyalah antaramuka—servis pangkalan data yang sebenarnya perlu berjalan. Juga, periksa connection string biasanya mongodb://localhost:27017
.
S: Apakah beza antara ekstensi mongodb.so
dan pakej Composer mongodb/mongodb
?
J: mongodb.so
ialah ekstensi aras rendah yang membolehkan PHP berkomunikasi dengan pemandu MongoDB (libmongoc) di aras C. Pakej Composer mongodb/mongodb
pula SDK PHP yang memberikan API berorientasikan objek yang mudah digunakan untuk operasi CRUD, pengagregatan, dan sebagainya. Dalam amalan PHP moden, anda biasanya perlukan kedua-duanya.
S: Bagaimana untuk ubah port atau konfigurasi MongoDB?
J: Anda boleh semak dan ubah tetapan di halaman konfigurasi pakej MongoDB dalam GUI ServBay, termasuk port. Untuk tetapan lanjutan, sunting fail konfigurasi MongoDB, yang lokasinya boleh didapati dalam butiran pakej di ServBay. Selepas perubahan, but semula servis MongoDB diperlukan.
Rumusan
ServBay menyediakan persekitaran pembangunan MongoDB yang sangat mudah dan efisien untuk pembangun PHP. Dengan GUI ServBay yang intuitif, anda boleh mengaktifkan ekstensi MongoDB untuk PHP dan memulakan servis pangkalan data MongoDB hanya dengan beberapa klik. Dengan bantuan pemandu rasmi PHP melalui Composer, anda boleh membina persekitaran pembangunan PHP + MongoDB tempatan dengan cepat, dan menumpukan perhatian kepada pembangunan aplikasi. Keupayaan integrasi ServBay sangat memudahkan konfigurasi persekitaran, membolehkan anda menjalankan pembangunan dan pengujian secara tempatan dengan lebih produktif.