Włączanie i używanie MongoDB w ServBay (rozszerzenie PHP i serwis bazy danych)
ServBay to zaawansowane lokalne środowisko webowe stworzone z myślą o programistach. Integruje liczne serwery internetowe, języki programowania i bazy danych, a także domyślnie instaluje szereg popularnych rozszerzeń oraz narzędzi programistycznych. Dla developerów PHP, którzy korzystają z bazy MongoDB, ServBay zapewnia proste metody włączenia rozszerzenia PHP dla MongoDB i uruchomienia silnika bazy.
W tym przewodniku szczegółowo opisano, jak włączyć rozszerzenie MongoDB dla PHP w ServBay, uruchomić usługę bazy MongoDB oraz jak łączyć się i używać MongoDB w projektach PHP.
Przegląd: ServBay i MongoDB
MongoDB to wydajna, otwartoźródłowa, dokumentowa baza danych NoSQL, szeroko stosowana w nowoczesnych projektach webowych ze względu na elastyczność modelu danych i dobrą skalowalność.
MongoDB należy do wbudowanych pakietów ServBay, umożliwiając programistom łatwą lokalną instalację i zarządzanie instancjami bazy. Dodatkowo ServBay oferuje gotowe, prekompilowane pakiety rozszerzeń MongoDB (mongodb.so
) dla wielu wersji PHP, dzięki czemu aplikacje PHP mogą komunikować się z bazą MongoDB.
Aby wykorzystać MongoDB w projekcie PHP, wykonaj dwa główne kroki:
- Włącz rozszerzenie MongoDB dla PHP – umożliwia to PHP wywołania funkcji związanych z MongoDB.
- Uruchom serwer bazy danych MongoDB – uruchamiający instancję bazy do przechowywania i zarządzania danymi.
Graficzny interfejs ServBay (GUI) znacząco upraszcza oba te procesy.
Wersje rozszerzenia PHP MongoDB
ServBay dostarcza odpowiednie rozszerzenia MongoDB dla wielu wersji PHP. Konkretne wersje mogą ulegać zmianom wraz z aktualizacjami ServBay, ale zazwyczaj są to stabilne, kompatybilne wydania. Przykładowe dopasowania wersji (sprawdź zawsze swoją wersję ServBay):
- 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
Pamiętaj, że rozszerzenie PHP (mongodb.so
) umożliwia jedynie komunikację PHP z bazą MongoDB. Aby korzystać z MongoDB w kodzie, zalecane jest zainstalowanie oficjalnego sterownika MongoDB dla PHP — instalacja odbywa się zazwyczaj przez Composer.
Włączanie rozszerzenia MongoDB dla PHP
Domyślnie, by zachować lekkość środowiska, niektóre rozszerzenia PHP w ServBay są wyłączone. Najłatwiejszą i zalecaną metodą aktywacji rozszerzenia MongoDB jest użycie GUI ServBay.
Włączanie przez GUI ServBay
To najszybszy i najprostszy sposób:
- Uruchom aplikację ServBay.
- W menu po lewej wybierz Języki (Languages), następnie PHP.
- Wskaż wersję PHP, w której chcesz aktywować MongoDB (np.
PHP 8.4
). - Po prawej stronie znajdź sekcję Rozszerzenia (Extensions).
- Przewiń w dół i odszukaj
MongoDB
. - Przesuń przełącznik obok
MongoDB
z szarego (wyłączony) na zielony (włączony). - Kliknij Zapisz (Save) na dole panelu.
ServBay automatycznie zaktualizuje konfigurację PHP i zrestartuje odpowiednie usługi, aby zmiany zaczęły obowiązywać.
Ręczna edycja pliku konfiguracyjnego (opcjonalnie)
Jeśli preferujesz manualną konfigurację lub potrzebujesz bardziej zaawansowanych ustawień, możesz bezpośrednio edytować plik konfiguracyjny PHP. Jednak dla większości użytkowników GUI jest wystarczające.
Przejdź do katalogu
conf.d
odpowiedniej wersji PHP. Na przykład, aby włączyć MongoDB dla PHP 8.3, ścieżka może wyglądać tak:bash/Applications/ServBay/etc/php/8.3/conf.d/mongodb.ini
1Dostosuj ścieżkę odpowiednio do swojej instalacji i wersji PHP.
Otwórz plik
mongodb.ini
w edytorze tekstu.Znajdź następujące linie:
ini[MongoDB] ; Uncomment the following line to enable MongoDB ;extension = mongodb.so
1
2
3Usuń średnik przed
extension = mongodb.so
, aby odkomentować linię:ini[MongoDB] ; Uncomment the following line to enable MongoDB extension = mongodb.so
1
2
3Zapisz zmiany.
Ważne: Po ręcznej edycji, wymagany jest restart usługi PHP. W GUI ServBay, wybierz Pakiety (Packages) w menu, znajdź używaną wersję PHP i kliknij przycisk restartu (zwykle ikona okrągłej strzałki) po prawej.
Uruchamianie serwisu bazy MongoDB
Aktywacja rozszerzenia PHP to tylko część procesu – potrzebujesz jeszcze uruchomionej instancji MongoDB. ServBay umożliwia to szybko przez GUI.
- Otwórz aplikację ServBay.
- W lewym menu wybierz Pakiety (Packages).
- W sekcji pakietów znajdź kategorię Bazy danych (Databases).
- Wybierz
MongoDB
. - Przesuń przełącznik obok
MongoDB
z szarego (zatrzymany) na zielony (uruchomiony).
Domyślnie MongoDB startuje na porcie 27017
.
Weryfikacja modułu MongoDB i połączenia z bazą
Po wykonaniu powyższych kroków sprawdź, czy rozszerzenie PHP działa i czy MongoDB jest aktywna.
Sprawdzanie, czy rozszerzenie PHP jest załadowane
Utwórz prosty plik PHP i sprawdź wynik phpinfo()
:
- W katalogu głównym strony ServBay (np.
/Applications/ServBay/www
) utwórz plikphpinfo.php
. - Dodaj następujący kod:php
<?php phpinfo(); ?>
1
2
3 - Otwórz plik w przeglądarce, np.
https://servbay.demo/phpinfo.php
(zakładając, żeservbay.demo
wskazuje na Twój katalog ServBaywww
). - Wyszukaj na stronie "MongoDB". Jeśli rozszerzenie jest aktywne, powinieneś zobaczyć sekcję "mongodb" z wersją i szczegółami konfiguracji.
(Uwaga: Twój zrzut ekranu lub interfejs ServBay mogą wyglądać nieco inaczej)
Sprawdzanie połączenia z bazą
Napisz prosty skrypt PHP, próbujący połączyć się z lokalnie uruchomioną bazą MongoDB:
- Upewnij się, że zainstalowałeś oficjalny sterownik MongoDB PHP przez Composer. Jeśli nie, wejdź do katalogu projektu i uruchom:bash
composer require mongodb/mongodb
1 - W projekcie utwórz plik PHP np.
test_mongodb.php
. - Dodaj poniższy kod:php
<?php require __DIR__ . '/vendor/autoload.php'; // Dostosuj ścieżkę do swojej struktury projektu echo "Próba połączenia z MongoDB...\n"; try { // Połącz z lokalną instancją MongoDB na domyślnym porcie 27017 $client = new MongoDB\Client("mongodb://localhost:27017"); // Wylistuj bazy danych, by zweryfikować połączenie $listDatabases = $client->listDatabases(); echo "Pomyślnie połączono z MongoDB!\n"; echo "Dostępne bazy:\n"; foreach ($listDatabases as $databaseInfo) { echo "- " . $databaseInfo->getName() . "\n"; } } catch (\MongoDB\Driver\Exception\Exception $e) { echo "Nie udało się połączyć z 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 - Uruchom ten skrypt w terminalu (używając konkretnej wersji PHP z ServBay) lub przez przeglądarkę WWW. Jeśli połączenie się uda, zobaczysz odpowiednie komunikaty oraz listę baz. W przypadku problemów komunikaty błędów ułatwią diagnostykę (np. MongoDB nie działa).
Używanie MongoDB w kodzie PHP
Po włączeniu rozszerzenia i uruchomieniu bazy MongoDB możesz w pełni korzystać z MongoDB w swoim projekcie za pomocą sterownika Composer.
Instalacja sterownika MongoDB PHP
Jak wspomniano wyżej, zainstaluj oficjalny pakiet przez Composer:
bash
composer require mongodb/mongodb
1
Dzięki temu uzyskasz pakiet mongodb/mongodb
wraz z zależnościami oraz wygenerowany plik vendor/autoload.php
.
Przykład użycia
Poniżej prosty kod demonstrujący połączenie z MongoDB, wstawianie dokumentu i pobieranie danych:
php
<?php
require __DIR__ . '/vendor/autoload.php'; // Upewnij się, że autoloader Composer jest dołączony
echo "Łączenie z MongoDB...\n";
try {
// Łączymy się z lokalną instancją MongoDB
$client = new MongoDB\Client("mongodb://localhost:27017");
// Wybieramy bazę i kolekcję
// Jeśli baza lub kolekcja nie istnieje, MongoDB utworzy je przy pierwszym zapisie
$collection = $client->servbay_demo_db->users; // Przykładowa baza danych: servbay_demo_db
echo "Połączono. Wykonywanie operacji...\n";
// Wstaw dokument
$insertResult = $collection->insertOne([
'name' => 'Alice ServBay', // Przykładowe dane zawierają markę
'email' => '[email protected]',
'age' => 30,
'createdAt' => new MongoDB\BSON\UTCDateTime(time() * 1000) // BSON: data i czas
]);
printf("Dodano dokument o ID: %s\n", $insertResult->getInsertedId());
// Pobierz dokument
$document = $collection->findOne(['name' => 'Alice ServBay']);
echo "Znaleziony dokument:\n";
if ($document) {
print_r($document);
} else {
echo "Nie znaleziono dokumentu.\n";
}
// Aktualizacja dokumentu (opcjonalnie)
$updateResult = $collection->updateOne(
['name' => 'Alice ServBay'],
['$set' => ['age' => 31, 'status' => 'updated']]
);
printf("Znaleziono %d dokument(ów) do aktualizacji, zmodyfikowano %d dokument(ów).\n", $updateResult->getMatchedCount(), $updateResult->getModifiedCount());
// Pobierz zaktualizowany dokument (opcjonalnie)
$updatedDocument = $collection->findOne(['name' => 'Alice ServBay']);
echo "Zaktualizowany dokument:\n";
if ($updatedDocument) {
print_r($updatedDocument);
}
// Usunięcie dokumentu (opcjonalnie)
// $deleteResult = $collection->deleteOne(['name' => 'Alice ServBay']);
// printf("Usunięto %d dokument(ów).\n", $deleteResult->getDeletedCount());
} catch (\MongoDB\Driver\Exception\Exception $e) {
echo "Wystąpił błąd: " . $e->getMessage() . "\n";
} catch (\Exception $e) {
echo "Wystąpił nieoczekiwany błąd: " . $e->getMessage() . "\n";
}
echo "Skrypt zakończony.\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
Zapisz kod jako plik PHP i uruchom w terminalu za pomocą CLI dostępnego w ServBay lub przez webserwer ServBay.
Wskazówki i najlepsze praktyki
- Status serwisu MongoDB: Upewnij się, że pakiet MongoDB w GUI ServBay oznaczony jest jako "uruchomiony", aby umożliwić połączenie.
- Domyślny port: MongoDB domyślnie nasłuchuje na porcie
27017
. Jeśli aplikacja ma używać innego portu, zmień go w ciągu połączenia i sprawdź ustawienia w GUI ServBay. - Rozszerzenie vs sterownik: Rozszerzenie
mongodb.so
umożliwia niskopoziomową komunikację, ale pakiet Composermongodb/mongodb
zapewnia wygodne, obiektowe API do obsługi bazy. Większość nowoczesnych aplikacji PHP korzysta głównie z pakietu Composer. - Certyfikaty CA użytkownika/CA publiczne: ServBay umożliwia generowanie certyfikatów SSL za pomocą własnego CA, co pomaga symulować środowisko produkcyjne z HTTPS w trakcie lokalnego developmentu. W typowej pracy z lokalną MongoDB SSL nie jest wymagany, lecz ServBay umożliwia wsparcie dla certyfikatów ACME, backupów i resetowania haseł, co wyróżnia środowisko ServBay.
- Narzędzia do zarządzania bazą: ServBay nie zawiera graficznego narzędzia do zarządzania MongoDB, ale możesz pobrać oficjalny MongoDB Compass lub korzystać z narzędzi konsolowych
mongo
/mongosh
do obsługi lokalnej instalacji.
FAQ – Często zadawane pytania
Q: Włączyłem rozszerzenie MongoDB dla PHP, ale skrypty PHP nie mogą połączyć się z MongoDB. Co zrobić?
A: Sprawdź, czy przez GUI ServBay uruchomiłeś usługę bazy danych MongoDB. Samo rozszerzenie pozwala na komunikację, ale bazę należy uruchomić osobno. Upewnij się także, że łańcuch połączenia jest poprawny (zwykle mongodb://localhost:27017
).
Q: Jaka jest różnica między rozszerzeniem mongodb.so
a paczką Composer mongodb/mongodb
?
A: mongodb.so
to niskopoziomowe rozszerzenie ładowane przez silnik PHP, zapewniające komunikację przez tzw. C Driver (libmongoc). Pakiet Composer mongodb/mongodb
to warstwa PHP budująca na bazie rozszerzenia wygodne, obiektowe API do zapytań CRUD czy agregacji — w nowoczesnym PHP typowo włącza się i rozszerzenie, i sterownik Composer.
Q: Jak zmienić port lub konfigurację MongoDB?
A: Podgląd i modyfikacja podstawowych ustawień jest możliwa przez GUI ServBay, w szczegółach pakietu MongoDB. Zaawansowaną konfigurację można wykonać przez edycję pliku konfiguracyjnego MongoDB (lokalizację znajdziesz w szczegółach pakietu w ServBay). Po edycji niezbędny jest restart usługi MongoDB.
Podsumowanie
ServBay zapewnia deweloperom PHP bardzo wygodne środowisko do pracy z MongoDB. Dzięki intuicyjnemu GUI błyskawicznie aktywujesz rozszerzenie MongoDB oraz serwis bazy danych. W połączeniu z oficjalnym sterownikiem instalowanym przez Composer pozwala to błyskawicznie uruchomić lokalne środowisko PHP + MongoDB i skupić się na kodowaniu biznesowej logiki aplikacji. Integracja i automatyzacja ServBay upraszcza zarządzanie środowiskiem developerskim, zoptymalizowanym pod wydajną, lokalną pracę i testy.