ServBay'de MongoDB'nin Etkinleştirilmesi ve Kullanımı (PHP Uzantısı ve Veritabanı Hizmeti)
ServBay, geliştiriciler için tasarlanmış güçlü bir yerel web geliştirme ortamıdır. Birçok web sunucusu, programlama dili ve veritabanını entegre şekilde sunmasının yanında, çeşitli popüler dil uzantılarını ve araçlarını da önceden yüklemiş olarak içerir. PHP projelerinde MongoDB kullanan geliştiriciler için ServBay, PHP'nin MongoDB uzantısını etkinleştirmek ve MongoDB hizmetini çalıştırmak adına son derece pratik çözümler sunar.
Bu yazıda, ServBay üzerinde PHP'nin MongoDB uzantısı nasıl etkinleştirilir, MongoDB veritabanı hizmeti nasıl başlatılır ve örneklerle PHP projelerinde MongoDB bağlantısı ve kullanımı nasıl gerçekleştirilir, detaylı şekilde anlatılacaktır.
Genel Bakış: ServBay ve MongoDB
MongoDB, esnek veri modeli ve yüksek ölçeklenebilirliğiyle modern web uygulamalarında yaygın kullanılan, yüksek performanslı ve açık kaynak kodlu belge tabanlı bir NoSQL veritabanıdır.
ServBay, MongoDB’yi yerleşik paketlerinden biri olarak içerir; böylece geliştiriciler kendi ortamlarında MongoDB veritabanı örneklerini kolayca kurup yönetebilir. Ayrıca ServBay, desteklediği tüm PHP sürümleri için ilgili MongoDB uzantılarını (mongodb.so
) derlenmiş ve paketlenmiş şekilde sunar; bu sayede PHP uygulamaları MongoDB ile sorunsuzca iletişim kurabilir.
PHP projesinde MongoDB kullanımı için iki temel adımı tamamlamanız gerekir:
- PHP'nin MongoDB Uzantısını Etkinleştirmek: PHP kodunun MongoDB ile bağlantılı fonksiyonları kullanabilmesini sağlar.
- MongoDB Veritabanı Hizmetini Başlatmak: Verilerin depolanacağı ve yönetileceği MongoDB veritabanı örneğini çalıştırır.
ServBay’in grafik kullanıcı arayüzü (GUI), bu adımların uygulanmasını oldukça kolaylaştırır.
PHP MongoDB Uzantısı Sürümleri
ServBay, desteklediği farklı PHP sürümleriyle uyumlu MongoDB uzantı sürümlerini sunar. Uzantı sürümleri, ServBay’in güncellemelerine göre değişiklik gösterebilir; fakat genellikle PHP ile uyumlu, kararlı sürümler dahil edilir. Aşağıda, sık kullanılan PHP sürümleriyle uyumlu gelen MongoDB uzantısı sürümlerini görebilirsiniz (en güncel bilgiler için ServBay’in kendi sürüm notlarına bakınız):
- PHP 5.6 ve 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
Dikkat: PHP uzantısı (mongodb.so
), yalnızca PHP ile MongoDB arasında iletişim köprüsü sağlar. PHP kodunda MongoDB ile doğrudan çalışabilmek için resmi MongoDB PHP sürücüsü ayrıca gereklidir — bu sürücü genellikle Composer ile kurulur.
PHP MongoDB Uzantısının Etkinleştirilmesi
Varsayılan olarak, ortamdaki gereksiz yükü azaltmak için ServBay, bazı PHP uzantılarını kapalı bırakabilir. MongoDB uzantısını açmanın önerilen ve pratik yolu ServBay GUI’dır.
ServBay GUI ile Etkinleştirme
En hızlı ve kolay yöntem şu şekildedir:
- ServBay uygulamasını açın.
- Sol menüden Diller (Languages) bölümüne tıklayın ve PHP'yi seçin.
- MongoDB uzantısını etkinleştirmek istediğiniz PHP sürümünü seçin (örneğin,
PHP 8.4
). - Sağ panelde Uzantılar (Extensions) kısmını bulun.
- Aşağı kaydırarak
MongoDB
uzantısını bulun. MongoDB
uzantısının solundaki anahtarı gri (pasif) konumdan yeşil (aktif) konuma getirin.- Panelin en altında yer alan Kaydet (Save) butonuna tıklayın.
ServBay, ilgili PHP yapılandırma dosyalarını sizin yerinize otomatik şekilde güncelleyecek ve etkilenen PHP servislerini yeniden başlatarak değişikliklerin geçerli olmasını sağlayacaktır.
Yapılandırma Dosyasını Manuel Olarak Düzenleme (İsteğe Bağlı)
Daha ileri ayarlar yapmak istemeniz veya el ile düzenlemeyi tercih ediyorsanız, ilgili PHP sürümünün yapılandırma dosyalarını doğrudan da düzenleyebilirsiniz. Ancak çoğu zaman GUI ile işlem yapmak yeterlidir.
Etkinleştirmek istediğiniz PHP sürümünün
conf.d
dizinine gidin. Örneğin, PHP 8.3 için yol genelde şöyle olur:bash/Applications/ServBay/etc/php/8.3/conf.d/mongodb.ini
1Kendi ServBay kurulumunuz ve PHP sürümünüze göre bu yolu güncelleyin.
Bir metin düzenleyici ile
mongodb.ini
dosyasını açın.Şu satırları bulun:
ini[MongoDB] ; Uncomment the following line to enable MongoDB ;extension = mongodb.so
1
2
3extension = mongodb.so
satırının başındaki noktalı virgülü (;
) kaldırarak satırı etkinleştirin:ini[MongoDB] ; Uncomment the following line to enable MongoDB extension = mongodb.so
1
2
3Dosyayı kaydedin.
Önemli: Yapılandırmayı manüel olarak değiştirdiyseniz, ilgili PHP hizmetini manuel olarak yeniden başlatmanız gerekecektir. ServBay GUI’da sol menüden Paketler (Packages) adımına girin, değiştirdiğiniz PHP sürümünü bulun ve sağ tarafındaki yeniden başlatma (genellikle dönen ok simgesi) ikonuna tıklayın.
MongoDB Veritabanı Hizmetinin Başlatılması
PHP uzantısını etkinleştirmek, sadece PHP’nin MongoDB ile “iletişim kurmasını” sağlar; ancak, verilerin depolanıp işlenebilmesi için çalışan bir MongoDB veritabanı örneğine de ihtiyacınız vardır. ServBay, MongoDB veritabanını bir paket olarak sunar ve GUI üzerinden kolaylıkla başlatabilirsiniz.
- ServBay uygulamasını açın.
- Sol menüden Paketler (Packages) bölümüne tıklayın.
- Paketler listesinde Veritabanları (Databases) kategorisine gidin.
MongoDB
paketini bulun.MongoDB
paketinin solundaki anahtarı gri (durdurulmuş) konumdan yeşil (çalışıyor) konuma getirin.
MongoDB hizmeti, varsayılan olarak 27017
portunda başlatılacaktır.
MongoDB Modülünü ve Veritabanı Bağlantısını Doğrulama
Yukarıdaki adımları tamamladıktan sonra, aşağıdaki yöntemlerle PHP MongoDB uzantısının başarıyla yüklendiğini ve MongoDB veritabanı hizmetinin düzgün çalıştığını kontrol edebilirsiniz.
PHP Uzantısının Yüklendiğini Doğrulama
phpinfo()
çıktısını kontrol eden basit bir PHP dosyası oluşturun:
- ServBay site kök dizininde (ör.
/Applications/ServBay/www
),phpinfo.php
adında yeni bir PHP dosyası oluşturun. - Dosyanın içeriğine aşağıdakini yazın:php
<?php phpinfo(); ?>
1
2
3 - Tarayıcıdan bu dosyayı açın, örneğin
https://servbay.demo/phpinfo.php
(buradaservbay.demo
ServBaywww
klasörüne yönlenen bir sitenin varsayılanıdır). - Açılan
phpinfo
sayfasında “MongoDB” ifadesini arayın. Eğer doğru yüklenmişse, “mongodb” başlıklı bir bölüm görecek ve uzantı sürümü ile yapılandırma detaylarını görebileceksiniz.
* (Not: Görseller, kullandığınız ServBay sürümüne veya arayüzüne göre farklılık gösterebilir) *
Veritabanı Bağlantısının Doğrulanması
Yerel MongoDB veritabanına bağlantıyı sınayan basit bir PHP betiği oluşturun:
- Projenizde Composer ile resmi MongoDB PHP sürücüsünü kurduğunuzdan emin olun. Hâlâ kurmadıysanız, proje dizininizde terminalden şu komutu çalıştırın:bash
composer require mongodb/mongodb
1 - Projenizde örneğin
test_mongodb.php
adında yeni bir PHP dosyası oluşturun. - Aşağıdaki kodu ekleyin:php
<?php require __DIR__ . '/vendor/autoload.php'; // Proje yapınıza göre yolu güncelleyin echo "Attempting to connect to MongoDB...\n"; try { // Yerel MongoDB örneğine bağlanma, varsayılan port 27017 $client = new MongoDB\Client("mongodb://localhost:27017"); // Bağlantının başarılı olup olmadığını doğrulamak için veritabanı listesini alalım $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 - Bu dosyayı terminalden (ilgili ServBay PHP sürümü ile) veya web üzerinden çalıştırın. Bağlantı başarılıysa, ekranda bağlantı başarı mesajı ve veritabanı listesi çıkacaktır. Bir hata olursa, hata mesajı örneğin MongoDB servisinin çalışmadığını veya başka bir problemi gösterecektir.
PHP Kodunda MongoDB Kullanımı
PHP MongoDB uzantısı etkinleştirildiğinde ve MongoDB veritabanı çalıştığında, PHP projenizde Composer ile yüklediğiniz MongoDB PHP sürücüsünü kullanarak her türlü veritabanı işlemini güvenle gerçekleştirebilirsiniz.
MongoDB PHP Sürücüsünün Kurulumu
Daha önce belirtildiği gibi, resmi sürücünün Composer ile kurulması önerilir:
composer require mongodb/mongodb
Bu komut, mongodb/mongodb
paketini ve bağlı olduğu dosyaları yükler ve vendor/autoload.php
dosyasını oluşturur.
Kod Örneği
Aşağıda, MongoDB’ye bağlanmak, belge eklemek ve belge sorgulamak için kısa bir kod örneği verilmiştir:
<?php
require __DIR__ . '/vendor/autoload.php'; // Composer'ın autoload dosyasını ekleyin
echo "Connecting to MongoDB...\n";
try {
// Yerel MongoDB örneğine bağlan
$client = new MongoDB\Client("mongodb://localhost:27017");
// Veritabanı ve koleksiyon seç
// Eğer bunlar yoksa, MongoDB ilk veri kaydında otomatik oluşturur
$collection = $client->servbay_demo_db->users; // Örnek veritabanı adı: servbay_demo_db
echo "Connected. Performing operations...\n";
// Belge ekle
$insertResult = $collection->insertOne([
'name' => 'Alice ServBay', // Örnek veri markayı içeriyor
'email' => '[email protected]',
'age' => 30,
'createdAt' => new MongoDB\BSON\UTCDateTime(time() * 1000) // BSON tarih türü kullanımı
]);
printf("Inserted document with ID: %s\n", $insertResult->getInsertedId());
// Belge sorgulama
$document = $collection->findOne(['name' => 'Alice ServBay']);
echo "Found document:\n";
if ($document) {
print_r($document);
} else {
echo "Document not found.\n";
}
// Belge güncelleme (isteğe bağlı)
$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());
// Güncellenmiş belgeyi sorgula (isteğe bağlı)
$updatedDocument = $collection->findOne(['name' => 'Alice ServBay']);
echo "Updated document:\n";
if ($updatedDocument) {
print_r($updatedDocument);
}
// Belge silme (isteğe bağlı)
// $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";
?>
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
Bu kodu bir PHP dosyasına kaydedin; ardından ServBay'in PHP CLI’sında çalıştırabilir veya ServBay aracılığıyla web sunucusunda test edebilirsiniz.
Dikkat Edilmesi Gerekenler ve En İyi Uygulamalar
- MongoDB Hizmet Durumu: Bağlantı kurmadan önce ServBay GUI’da MongoDB paketinin "çalışıyor" olduğundan emin olun.
- Varsayılan Port: MongoDB genellikle
27017
portunda çalışır. Farklı bir port kullanıyorsanız bağlantı dizesini buna göre güncelleyin. ServBay GUI’da port ayarlarını görebilir veya değiştirebilirsiniz. - Uzantı ve Sürücü Ayrımı: PHP
mongodb.so
uzantısı temel iletişimi sağlar;mongodb/mongodb
Composer paketi ise üst düzey, nesne yönelimli API sağlar. Modern PHP uygulamalarında genellikle ikisinin birlikte kullanılması gerekir. - ServBay User CA/Public CA: ServBay, yerleşik CA ile geliştiricilere SSL sertifikası sağlama olanağı tanır. Bu, yerel geliştirmede üretime benzer HTTPS ortamları oluşturmanıza yardımcı olur. Yerel MongoDB bağlantıları çoğunlukla SSL gerektirmese de, daha karmaşık senaryolarda göz önünde tutulabilir. Ayrıca ServBay, ACME ile gerçek sertifika alımı, veri yedekleme ve veritabanı şifresi sıfırlama gibi gelişmiş avantajlar da sunar.
- Veritabanı Yönetim Araçları: ServBay, MongoDB için görsel yönetim aracı sunmayabilir; fakat MongoDB Compass gibi resmi araçları veya
mongo
/mongosh
komut satırı uygulamalarını indirip kullanarak veritabanınızı yönetebilirsiniz.
Sıkça Sorulan Sorular (SSS)
S: PHP MongoDB uzantısını etkinleştirdim ama PHP betiğim hala MongoDB’ye bağlanamıyor, ne yapmalıyım?
C: Öncelikle ServBay GUI üzerinden MongoDB veritabanı hizmetini başlattığınızdan emin olun. PHP uzantısı sadece bir arabirimdir, çalışan veritabanı hizmetinin başlamış olması gerekir. Ayrıca bağlantı dizesinin doğru olduğundan (mongodb://localhost:27017
) emin olun.
S: mongodb.so
uzantısı ile mongodb/mongodb
Composer paketi arasındaki fark nedir?
C: mongodb.so
PHP motoruna yüklenen ve dil ile MongoDB’nin C sürücüsü (libmongoc) arasında haberleşmeyi sağlayan temel uzantıdır. mongodb/mongodb
Composer paketi ise bu uzantı üzerine kurulu, nesne yönelimli programlamayı kolaylaştıran bir PHP kütüphanesidir. Modern uygulamalarda genellikle her ikisine de ihtiyacınız olur.
S: MongoDB’nin portunu veya ayarlarını nasıl değiştirebilirim?
C: ServBay GUI’da MongoDB paketinin yapılandırma seçenekleri altında port ve diğer ayarları görebilirsiniz. Daha karmaşık ayar değişiklikleri için ServBay’in paket detaylarında gösterilen konfigurasyon dosyasını düzenlemeniz gerekebilir. Değişiklik sonrası MongoDB’yi yeniden başlatmalısınız.
Özet
ServBay, PHP geliştiricilerine MongoDB ile çalışma konusunda büyük kolaylık sunar. ServBay’in sezgisel grafik arayüzü ile PHP MongoDB uzantısını hızla açabilir ve MongoDB veritabanı hizmetini başlatabilirsiniz. Composer aracılığıyla resmi PHP sürücüsünü kurarak yerel ortamınızda PHP + MongoDB geliştirmeye hemen başlayabilir, zamanınızı uygulama mantığına ayırabilirsiniz. ServBay’in sunduğu bütünleşik yapı, konfigürasyon karmaşasını ortadan kaldırır; yerel geliştirme ve test süreçlerine hız ve verimlilik katar.