Explore o novo chatbot do Developer Center! O MongoDB AI chatbot pode ser acessado na parte superior da sua navegação para responder a todas as suas perguntas sobre o MongoDB .

Desenvolvedor do MongoDB
Central de desenvolvedor do MongoDBchevron-right
Idiomaschevron-right
PHPchevron-right

Preparando-se para executar PHP com MongoDB

Michael Lynn12 min read • Published Feb 05, 2022 • Updated Aug 29, 2024
MongoDBPHP
Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Início rápido
star-empty
star-empty
star-empty
star-empty
star-empty
Emblema PHP
Bem-vindo a este guia de início rápido para MongoDB com PHP. Sabemos que você provavelmente está interessado em começar a escrever código e criar aplicativos usando PHP com MongoDB. Nós chegaremos lá, eu prometo. No entanto, vamos Go por algumas configurações necessárias primeiro.
Este guia está organizado em algumas seções em alguns artigos. Este primeiro artigo aborda a instalação e configuração do seu ambiente de desenvolvimento. PHP é uma linguagem integrada de desenvolvimento web. Existem vários componentes que você normalmente usa em conjunto com a linguagem de programação PHP. Se você já tiver o PHP instalado e só quer começar a usar o PHP e o MongoDB, fique à vontade para pular para opróximo artigo desta série.
Vamos começar com uma visão geral do que abordaremos nesta série.
Uma breve observação sobre PHP e Apache: como o PHP é principalmente uma linguagem web — o que significa que ele foi criado para funcionar com um servidor web — passaremos algum tempo no início deste artigo garantindo que você tenha PHP e Apache web servidor instalado e configurado corretamente. Existem alternativas, mas vamos nos concentrar em PHP e Apache.
O PHP foi desenvolvido e lançado pela primeira vez em 1994 por Rasmus Lerdorf. Embora tenha suas raízes na linguagem C, a sintaxe do PHP era muito parecida com a do Perl desde o início. Um dos principais motivos de sua enorme popularidade foi sua simplicidade e a natureza dinâmica e interpretada de sua implementação.

Pré-requisitos

Você precisará dos seguintes itens instalados em seu computador para acompanhar este tutorial:
  • MacOS Catalina ou posterior: você pode executar o PHP em versões anteriores, mas continuaremos no MacOS neste tutorial.
  • Homebrew Package Manager: o gerenciador de pacotes ausente para macOS.
  • PECL: o repositório para extensões PHP .
  • Um editor de código de sua preferência: recomendo o Visual Studio Code.

Instalação

Primeiro, vamos instalar as ferramentas de linha de comando, pois elas serão usadas pelo Homebrew:
1xcode-select --install
Em seguida, usaremos um gerenciador de pacotes para instalar as coisas. Isso garante que nossas dependências serão atendidas. Prefiro Homebrew, ou brew para abreviar. Para começar a usar brew, abra seu terminal app e digite:
1/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
Isso aproveita curl para extrair os scripts e binários de instalação mais recentes para brew.
As instruções de instalação são bem simples. Digite sua senha quando necessário para assumir privilégios de root para a instalação. Quando estiver concluído, basta digitar o seguinte para verificar se o brew está instalado corretamente:
1brew --version
Se você tiver problemas neste ponto e não conseguir executar brew, consulte os documentos de instalação do Homebrew.
Você também pode verificar a instalação do homebrew usando brew doctor. Confirme se todos os problemas ou mensagens de erro foram resolvidos antes de prosseguir. Você pode encontrar avisos, que geralmente podem ser ignorados com segurança.

Instalando o Apache

Para usar o MongoDB com PHP, devemos instalar o Apache.
A versão mais recente do macOS 11.0 Big Sur vem com o Apache 2.4 pré-instalado, mas a Apple removeu alguns scripts essenciais, o que dificulta seu uso.
Então, para ter certeza de que estamos alinhados, vamos instalar o Apache 2.4 via Homebrew e, em seguida, executá-lo nas portas padrão (80/443).
Quando eu estava escrevendo este tutorial, perdi muito tempo tentando descobrir o que estava acontecendo com a versão pré-instalada. Então, acho melhor instalarmos do zero usando o Homebrew.
1sudo apachectl stop # stop the existing apache just to be safe
2sudo launchtl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist # Remove the configuration to run httpd daemons
Agora, vamos instalar a versão mais recente do Apache:
1brew install httpd
Uma vez instalado, vamos iniciar o serviço.
1brew services start httpd
Agora você deve conseguir abrir um navegador da Web, visitar http://localhost:8080 e ver algo semelhante ao seguinte:
"Funciona" durante a instalação do Apache para usar o MongoDB com PHP
O servidor web Apache padrão não oferece suporte para PHP integrado. Portanto, precisamos instalar o PHP e a extensão PHP para reconhecer e interpretar arquivos PHP.

Instalando o PHP

Se você instalou versões anteriores do PHP, recomendo enfaticamente que faça uma limpeza removendo as versões mais antigas. Se você tiver projetos anteriores que dependam dessas versões, precisará ter cuidado e fazer backup de suas configurações e arquivos de projeto.
O Homebrew é uma boa maneira de os usuários do MacOS instalarem o PHP.
1brew install php
Quando isso for concluído, você poderá testar se ele foi instalado corretamente emitindo o seguinte comando em seu prompt de linha de comando no terminal.
1php --version
Você deverá ver algo semelhante a isto:
1$ php --version
2PHP 8.0.0 (cli) (built: Nov 30 2020 13:47:29) ( NTS )
3Copyright (c) The PHP Group
4Zend Engine v4.0.0-dev, Copyright (c) Zend Technologies
5with Zend OPcache v8.0.0, Copyright (c), by Zend Technologies

Instalando a extensão PHP

Agora que temos o php instalado, podemos configurar o Apache para usar o PHP para interpretar nosso conteúdo da web, traduzindo nossos comandos php em vez de exibir o código-fonte.
PECL (PHP Extension Community Library) é um repositório para extensões PHP, fornecendo um diretório de todas as extensões conhecidas e recursos de hospedagem ou download e desenvolvimento de extensões PHP. pecl é a ferramenta binária ou de linha de comando (instalada por padrão com PHP) que você pode usar para instalar e gerenciar extensões PHP. Faremos isso na próxima seção.
Instale a extensão PHP MongoDB antes de instalar a biblioteca PHP para MongoDB. É importante observar que a experiência completa do driver MongoDB é fornecida com a instalação da extensão de baixo nível (que se integra ao nosso driver C) e da biblioteca de alto nível, escrita em PHP.
Você pode instalar a extensão usando o PECL na linha de comando:
1pecl install mongodb
Em seguida, precisamos modificar o arquivo php.ini principal para incluir a extensão MongoDB. Para localizar seu arquivo php.ini, use o seguinte comando:
1$ php --ini
2Configuration File (php.ini) Path: /usr/local/etc/php/8.3
Para instalar a extensão, copie a linha a seguir e coloque-a no final do arquivo php.ini.
1extension=mongodb.so
Depois de salvar o php.ini, reinicie o serviço Apache e, para verificar a instalação, use o seguinte comando.
1brew services restart httpd
2
3php -i | grep mongo
Você deverá ver uma saída semelhante a esta:
1$ php -i | grep mongo
2mongodb
3libmongoc bundled version => 1.25.2
4libmongoc SSL => enabled
5libmongoc SSL library => OpenSSL
6libmongoc crypto => enabled
7libmongoc crypto library => libcrypto
8libmongoc crypto system profile => disabled
9libmongoc SASL => enabled
10libmongoc SRV => enabled
11libmongoc compression => enabled
12libmongoc compression snappy => enabled
13libmongoc compression zlib => enabled
14libmongoc compression zstd => enabled
15libmongocrypt bundled version => 1.8.2
16libmongocrypt crypto => enabled
17libmongocrypt crypto library => libcrypto
18mongodb.debug => no value => no value
Agora você está pronto para começar a usar o PHP para manipular e gerenciar dados em seus bancos de dados MongoDB. Em seguida, vamos nos concentrar em preparar seu cluster do MongoDB.

Solucionando problemas de configuração PHP

Se você estiver enfrentando problemas com a instalação da extensão do MongoDB, algumas dicas ajudam a verificar se tudo está instalado corretamente.
Primeiro, você pode verificar se o Apache e o PHP foram instalados com êxito criando um arquivo info.php na raiz do diretório da Web. Para localizar o diretório web raiz, use o seguinte comando:
1$ brew info httpd
2==> httpd: stable 2.4.58 (bottled)
3Apache HTTP server
4https://httpd.apache.org/
5/usr/local/Cellar/httpd/2.4.58 (1,663 files, 31.8MB) *
6 Poured from bottle using the formulae.brew.sh API on 2023-11-09 at 18:19:19
7From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/h/httpd.rb
8License: Apache-2.0
9==> Dependencies
10Required: apr ✔, apr-util ✔, brotli ✔, libnghttp2 ✔, openssl@3 ✔, pcre2 ✔
11==> Caveats
12DocumentRoot is /usr/local/var/www
No arquivo, adicione o seguinte conteúdo:
1<?php
2echo("Hello World");
3?>
Em seguida, vamos falar sobre como executar um programa PHP no localhost. Navegue até http://localhost:8080/info.php e você deverá ver uma página em branco apenas com o texto Olá, mundo.
Em seguida, edite o conteúdo do arquivo info.php para:
1<?php
2phpinfo();
3?>
Salve e, em seguida, atualize a página info.php. Você deverá ver uma página com uma grande tabela de informações PHP como esta:
tabela phpinfo
IMPORTANTE: Em servidores de produção, não é seguro expor as informações exibidas por phpinfo() em uma página acessível publicamente
As informações em que estamos interessados podem estar nestes locais:
  • A propriedade "Configuration File (php.ini) Path" mostra de onde o tempo de execução do PHP está obtendo o arquivo php.ini. Pode acontecer que a extensão mongodb.so tenha sido adicionada no arquivo php.ini errado, pois pode haver mais de um.
  • “Additional .ini files parsed mostra possíveis arquivos de configuração PHP extras que podem impactar sua configuração específica. Esses arquivos estão no diretório listado pela seção "Scan this dir for additional .ini files" na tabela.
Há também uma tabela “mongodb” inteira que se parece com isto:
A seção MongoDB em phpinfo
Sua presença indica que a extensão MongoDB foi carregada corretamente e está funcionando. Você também pode ver o número da versão para garantir que é a que pretende usar.
Se você não vir esta seção, é provável que a extensão MongoDB não tenha sido carregada. Se esse for o caso, procure a propriedade "error_log" na tabela para ver onde está o arquivo de log de erros do PHP, pois ele pode conter pistas cruciais. Certifique-se de que "log_errors" esteja definido como LIGADO. Ambos estão localizados na seção "Core" do PHP.
Se você estiver atualizando para uma versão mais recente do PHP ou tiver várias versões instaladas, lembre-se de que cada versão precisa ter sua própria extensão MongoDB e arquivos php.ini.

Iniciar um cluster MongoDB no Atlas

Agora que você configurou seu ambiente local, é hora de criar um MongoDB database para trabalhar e carregar alguns dados de exemplo que você possa explorar e modificar.
Comece hoje mesmo com um cluster M0 no Atlas. É gratuito para sempre e é a maneira mais fácil de experimentar as etapas desta série de blogs.
O provisionamento do cluster levará alguns minutos; portanto, enquanto espera, você pode passar para a próxima etapa.

Configurar sua instância do MongoDB

Esperemos que seu MongoDB cluster tenha terminado de ser iniciado agora e provavelmente esteja em execução há alguns minutos.
As instruções a seguir estavam corretas no momento da redação, mas podem mudar, pois estamos sempre melhorando o Atlas user:
Na interface web do Atlas, você verá um botão verde "Get Started" no canto inferior esquerdo da tela. Clique nele para ver uma lista de verificação de etapas para configurar seu banco de dados. Clique em cada um dos itens da lista (incluindo o item "Carregar dados de amostra " — usaremos isso posteriormente para testar a biblioteca PHP) para ajudar nas etapas de configuração.
A maneira mais rápida de obter acesso aos dados é carregar os conjuntos de dados de exemplo em seu cluster diretamente no console do Atlas. Se você for novo, o assistente de novo usuário o orientará durante o processo e solicitará que você os carregue.
Se você já criou o cluster e deseja voltar para carregar os conjuntos de dados de amostra, clique nas reticências (três pontos) ao lado dos botões de conexão do cluster (veja a imagem abaixo) e selecione Load Sample Dataset.
Carregar conjunto de dados de amostra
Agora, vamos definir a configuração necessária para acessar seus dados no Cluster MongoDB. Você precisará criar um usuário de banco de dados e configurar sua lista de acesso de endereços IP.

Criar um usuário

Seguindo as etapas de "Começar", crie um usuário com "Acesso de leitura e gravação a qualquer banco de dados". Você pode dar-lhe o nome de usuário e senha de sua escolha. Faça uma cópia deles, porque você vai precisar deles em breve. Use o botão "gerar automaticamente senha segura" para garantir que você tenha uma senha longa e aleatória que também seja segura para colar em sua string mais tarde.

Adicione seu endereço IP à lista de acesso

Ao implantar um aplicativo com dados confidenciais, você deve apenas colocar na lista de permissões o endereço IP dos servidores que precisam se conectar ao seu banco de dados. Para colocar na lista de permissões o endereço IP de sua máquina de desenvolvimento, selecione "Acesso à rede", clique no botão "Adicionar endereço IP" e, em seguida, clique em "Adicionar endereço IP atual" e pressione "Confirmar."

Conecte-se ao seu banco de dados

A última etapa da lista de verificação "Começar" é "Conecte-se ao seu cluster". Selecione "Conectar seu aplicativo" e selecione "PHP" com uma versão de "PHPLIB 1.8".
Conectar via PHP
Clique no botão "Copiar" para copiar o URL em seu buffer de colagem. Salve-o no mesmo local em que armazenou seu nome de usuário e senha. Observe que o URL tem <password> como espaço reservado para sua senha. Você deve colar sua senha aqui, substituindo todo o espaço reservado, inclusive os caracteres < e >.
Agora é hora de realmente escrever algum código PHP para se conectar ao seu MongoDB database! Até agora, instalamos apenas os componentes de suporte do sistema. Antes de começarmos a nos conectar ao nosso banco de dados e usar o PHP para manipular dados, precisamos instalar a biblioteca PHP do MongoDB.
Composer é a ferramenta de instalação recomendada para a biblioteca MongoDB. O Composer é uma ferramenta para gerenciamento de dependências em PHP. Ele permite que você declare as bibliotecas das quais seu projeto depende e ele as gerenciará (instalará/atualizará) para você.
Para instalar o composer, podemos usar o Homebrew.
1brew install composer

Instalando a biblioteca PHP do MongoDB

Depois que o composer estiver instalado, você poderá prosseguir com a instalação da biblioteca do MongoDB.
A instalação da biblioteca deve ocorrer no diretório raiz do seu projeto. O Composer não é um gerenciador de pacotes no mesmo sentido que o Yum ou o Apt. O Composer instala pacotes em um diretório dentro do seu projeto. Por padrão, ele não instala nada globalmente.
1$ composer require mongodb/mongodb
2Using version ^1.8 for mongodb/mongodb
3./composer.json has been created
4Running composer update mongodb/mongodb
5Loading composer repositories with package information
6Updating dependencies
7Lock file operations: 4 installs, 0 updates, 0 removals
8- Locking composer/package-versions-deprecated (1.11.99.1)
9- Locking jean85/pretty-package-versions (1.6.0)
10- Locking mongodb/mongodb (1.8.0)
11- Locking symfony/polyfill-php80 (v1.22.0)
12Writing lock file
13Installing dependencies from lock file (including require-dev)
14Package operations: 4 installs, 0 updates, 0 removals
15- Installing composer/package-versions-deprecated (1.11.99.1): Extracting archive
16- Installing symfony/polyfill-php80 (v1.22.0): Extracting archive
17- Installing jean85/pretty-package-versions (1.6.0): Extracting archive
18- Installing mongodb/mongodb (1.8.0): Extracting archive
19Generating autoload files
20composer/package-versions-deprecated: Generating version class...
21composer/package-versions-deprecated: ...done generating version class
222 packages you are using are looking for funding.
Verifique se você está no mesmo diretório em que estava quando usou o composer acima para instalar a biblioteca.
No editor de código, crie um arquivo PHP no diretório de projeto chamado quickstart.php. Se você estiver referenciando o exemplo, insira o seguinte código:
1<?php
2
3 require_once __DIR__ . '/vendor/autoload.php';
4
5 $client = new MongoDB\Client(
6 'mongodb+srv://<username><password>@myfirstcluster.zbcul.mongodb.net/dbname?retryWrites=true&w=majority');
7
8 $customers = $client->selectCollection('sample_analytics', 'customers');
9 $document = $customers->findOne(['username' => 'wesley20']);
10
11 var_dump($document);
12
13?>
<username> e <password> são o nome de usuário e a senha que você criou no Atlas, e o endereço do cluster é específico para o cluster que você iniciou no Atlas.
Salve e feche o programa quickstart.php e execute-o a partir da linha de comando:
1$ php quickstart.php
Se tudo correr bem, você deverá ver algo semelhante ao seguinte:
1$ php quickstart.php
2object(MongoDB\Model\BSONDocument)#12 (1) {
3["storage":"ArrayObject":private]=>
4 array(8) {
5 ["_id"]=>
6 object(MongoDB\BSON\ObjectId)#16 (1) {
7 ["oid"]=>
8 string(24) "5ca4bbcea2dd94ee58162a72"
9 }
10 ["username"]=>
11 string(8) "wesley20"
12 ["name"]=>
13 string(13) "James Sanchez"
14 ["address"]=>
15 string(45) "8681 Karen Roads Apt. 096 Lowehaven, IA 19798"
16 ["birthdate"]=>
17 object(MongoDB\BSON\UTCDateTime)#15 (1) {
18 ["milliseconds"]=>
19 string(11) "95789846000"
20 }
21 ["email"]=>
22 string(24) "josephmacias@hotmail.com"
23 ["accounts"]=>
24 object(MongoDB\Model\BSONArray)#14 (1) {
25 ["storage":"ArrayObject":private]=>
26 array(1) {
27 [0]=>
28 int(987709)
29 }
30 }
31 ["tier_and_details"]=>
32 object(MongoDB\Model\BSONDocument)#13 (1) {
33 ["storage":"ArrayObject":private]=>
34 array(0) {
35 }
36 }
37 }
38}
Você acabou de conectar seu programa PHP ao MongoDB e realizou uma query de um único documento do banco de dados sample_analytics em seu cluster! Se você não vir esses dados, talvez não tenha carregado com sucesso os dados de amostra em seu cluster. Volte algumas etapas até que a execução desse comando mostre o documento acima.

Protegendo nomes de usuário e senhas

Armazenar nomes de usuários e senhas em seu código nunca é uma boa ideia. Vamos dar mais um passo para protegê-los um pouco melhor. É uma prática geral colocar esses tipos de valores confidenciais em um arquivo de ambiente como .env. O truque, então, será fazer com que seu código PHP leia esses valores. Felizmente, Vance Lucas encontrou uma ótima solução chamada phpdotenv. Para começar a usar a solução da Vance, vamos usar composer.
1$ composer require vlucas/phpdotenv
Agora que temos a biblioteca instalada, vamos criar nosso arquivo .env que contém nossos valores confidenciais. Abra seu editor favorito e crie um arquivo chamado .env, colocando os seguintes valores nele. Substitua your user name e your password pelos valores reais criados ao adicionar um usuário de banco de dados no Atlas.
1MDB_USER="your user name"
2MDB_PASS="your password"
Em seguida, precisamos modificar nosso programa quickstart.php para extrair os valores usando phpdotenv. Vamos adicionar uma chamada à biblioteca e modificar nosso programa de início rápido para que fique como o seguinte. Observe as alterações nas linhas 5, 6 e 9.
1<?php
2
3require_once __DIR__ . '/vendor/autoload.php';
4$dotenv = Dotenv\Dotenv::createImmutable(__DIR__);
5$dotenv->load();
6
7$client = new MongoDB\Client(
8 'mongodb+srv://'.$_ENV['MDB_USER'].':'.$_ENV['MDB_PASS'].'@tasktracker.zbcul.mongodb.net/sample_analytics?retryWrites=true&w=majority'
9);
10
11$customers = $client->selectCollection('sample_analytics', 'customers');
12$document = $customers->findOne(['username' => 'wesley20']);
13
14var_dump($document);
Em seguida, para garantir que você não esteja publicando suas credenciais em git ou em qualquer repositório de código-fonte que esteja usando, certifique-se de adicionar um .gitignore (ou equivalente) para evitar o armazenamento desse arquivo em seu repositório. Aqui está meu arquivo .gitignore:
1composer.phar
2/vendor/
3.env
Meu .gitignore inclui arquivos que são aproveitados como parte de nossas bibliotecas - eles não devem ser armazenados em nosso projeto.
Se quiser aproveitar os arquivos do meu projeto, fique à vontade para visitar meu repositório no github, clonar, bifurcar e compartilhar seus comentários na Comunidade.
Este início rápido teve o objetivo de preparar você para usar o PHP com o MongoDB. Agora você deve estar pronto para passar para o próximo artigo desta série. Sinta-se à vontade para me contatar na Comunidade se tiver alguma dúvida sobre este artigo ou qualquer coisa relacionada ao MongoDB.
Certifique-se de visitar, estrelar, bifurcar e clonar o repositório complementar deste artigo.

Referências


Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Início rápido
star-empty
star-empty
star-empty
star-empty
star-empty
Relacionado
Tutorial

Como criar um serviço de backend do Laravel + MongoDB


Oct 01, 2024 | 15 min read
Artigo

Lidando com Erros do MongoDB PHP


Aug 28, 2024 | 7 min read
Notícias e Anúncios

Laravel Herd adiciona suporte nativo ao MongoDB


Oct 07, 2024 | 0 min read
Início rápido

Criar, ler, atualizar e excluir documentos MongoDB com PHP


Sep 11, 2024 | 8 min read
Sumário