Fundamentos do PHP

0/25 aulas0%
pratica

Configurando o ambiente de desenvolvimento (XAMPP/Docker)

Aprenda sobre configurando o ambiente de desenvolvimento (xampp/docker)

40 min
Aula 2 de 5

Configurando o Ambiente de Desenvolvimento (XAMPP/Docker)

Olá, futuro(a) desenvolvedor(a) PHP! 👋 Nesta aula prática, vamos mergulhar na configuração do seu ambiente de desenvolvimento. Ter um ambiente bem configurado é o primeiro passo e um dos mais cruciais para começar a programar em PHP. Sem ele, você não conseguirá executar seu código!

Vamos explorar duas abordagens populares:

  1. XAMPP: Uma solução "tudo em um" para quem busca simplicidade e rapidez.
  2. Docker: Uma abordagem moderna que oferece isolamento, portabilidade e ambientes de desenvolvimento consistentes.

Ao final desta aula, você será capaz de escolher e configurar o ambiente que melhor se adapta às suas necessidades e começar a escrever seu primeiro código PHP! 🚀


1. Introdução: Por que um Ambiente de Desenvolvimento?

Para que seu código PHP funcione, ele precisa de um servidor web (como Apache ou Nginx) para processar as requisições HTTP e de um interpretador PHP para executar o código. Muitas vezes, você também precisará de um banco de dados (como MySQL ou MariaDB) para armazenar informações.

Configurar cada um desses componentes individualmente pode ser complexo, especialmente para iniciantes. É aí que ferramentas como XAMPP e Docker brilham, simplificando esse processo.


2. Abordagem 1: XAMPP - O Tudo em Um Simples e Rápido

XAMPP é um pacote de software livre que contém o Apache HTTP Server, MariaDB (um fork do MySQL), e interpretadores para as linguagens de script PHP e Perl. O nome XAMPP é um acrônimo:

  • X: Cross-platform (roda em Windows, Linux, macOS)
  • A: Apache
  • M: MariaDB
  • P: PHP
  • P: Perl

É a maneira mais rápida de ter um ambiente de desenvolvimento PHP funcional em sua máquina local.

Por que usar XAMPP? 🤔

  • Facilidade de Instalação: Processo de instalação simples e direto.
  • Tudo Incluso: Vem com Apache, MariaDB e PHP pré-configurados.
  • Ideal para Iniciantes: Ótimo para quem está começando e quer focar no PHP sem se preocupar muito com a infraestrutura.

Instalação do XAMPP 🛠️

  1. Download: Acesse o site oficial do XAMPP: https://www.apachefriends.org/index.html
  2. Escolha sua Plataforma: Baixe a versão correspondente ao seu sistema operacional (Windows, Linux, ou macOS).
  3. Execute o Instalador: Siga as instruções do instalador. Geralmente, você pode aceitar as configurações padrão.
    • Windows: Execute o .exe e siga o assistente.
    • macOS: Arraste o XAMPP para a pasta Aplicativos.
    • Linux: Execute o script .run (pode ser necessário chmod +x antes).
  4. Inicie o Painel de Controle: Após a instalação, localize e abra o "XAMPP Control Panel".
  5. Inicie os Serviços: No painel de controle, clique em "Start" para o Apache e para o MySQL. Se tudo ocorrer bem, eles ficarão verdes.

Verificando a Instalação com phpinfo() 🔍

Para ter certeza de que o PHP está funcionando corretamente, vamos criar um arquivo simples:

  1. Localize a pasta htdocs:

    • Windows: C:\xampp\htdocs\
    • macOS: /Applications/XAMPP/xamppfiles/htdocs/
    • Linux: /opt/lampp/htdocs/
  2. Crie um arquivo: Dentro da pasta htdocs, crie um novo arquivo chamado info.php.

  3. Adicione o código: Cole o seguinte código PHP dentro do arquivo info.php:

    <?php
    // Documentação oficial: https://www.php.net/manual/pt_BR/function.phpinfo.php
    phpinfo();
    ?>
  4. Acesse no Navegador: Abra seu navegador web e digite: http://localhost/info.php Se você vir uma página cheia de informações sobre a sua instalação PHP, parabéns! Seu XAMPP está funcionando. 🎉

Exemplo de Aplicação Simples no XAMPP 📝

Vamos criar uma pequena aplicação PHP que exibe uma mensagem.

  1. Crie uma pasta: Dentro de htdocs, crie uma nova pasta chamada meuprojeto.

  2. Crie um arquivo: Dentro de meuprojeto, crie um arquivo chamado index.php.

  3. Adicione o código:

    <?php
    // Documentação oficial: https://www.php.net/manual/pt_BR/language.basic-syntax.phptags.php
    $nome = "Mundo PHP";
    echo "<h1>Olá, {$nome}!</h1>";
    echo "<p>Bem-vindo(a) ao seu primeiro projeto PHP com XAMPP.</p>";
    echo "<p>A data e hora atuais são: " . date("Y-m-d H:i:s") . "</p>";
    ?>
  4. Acesse no Navegador: http://localhost/meuprojeto/ Você deverá ver a mensagem "Olá, Mundo PHP!" com a data e hora atuais.


3. Abordagem 2: Docker - O Ambiente Moderno e Isolado

Docker é uma plataforma que permite desenvolver, empacotar e executar aplicações em ambientes isolados chamados contêineres. Pense em um contêiner como uma pequena máquina virtual que contém tudo o que sua aplicação precisa para rodar (código, runtime, bibliotecas, etc.), garantindo que ela funcione da mesma forma em qualquer lugar.

Por que usar Docker? 🐳

  • Isolamento: Cada projeto pode ter seu próprio ambiente, sem conflitos de dependências.
  • Portabilidade: Um contêiner Docker funciona da mesma forma em qualquer máquina que tenha Docker instalado.
  • Consistência: Garante que o ambiente de desenvolvimento seja idêntico ao de produção.
  • Escalabilidade: Fácil de escalar aplicações.
  • Colaboração: Facilita o trabalho em equipe, pois todos usam o mesmo ambiente.

Pré-requisitos para Docker 🚀

  1. Docker Desktop: Instale o Docker Desktop para o seu sistema operacional.

Configurando um Ambiente PHP com Docker Compose 📦

Para um ambiente PHP completo (com servidor web e banco de dados), usamos o Docker Compose. Ele nos permite definir e executar aplicações Docker multi-contêineres.

Vamos criar uma estrutura de projeto com PHP, Nginx (como servidor web) e MySQL.

  1. Crie uma pasta para o projeto: mkdir meu-projeto-docker && cd meu-projeto-docker

  2. Crie o arquivo docker-compose.yml: Este arquivo define os serviços (contêineres) que compõem sua aplicação.

    # Documentação oficial do Docker Compose: https://docs.docker.com/compose/compose-file/
    version: '3.8'
     
    services:
      # Serviço PHP-FPM
      app:
        build:
          context: .
          dockerfile: Dockerfile
        volumes:
          - ./src:/var/www/html
        ports:
          - "9000:9000" # Porta PHP-FPM (não acessível diretamente pelo navegador)
        networks:
          - app-network
     
      # Serviço Nginx (servidor web)
      web:
        image: nginx:latest
        ports:
          - "80:80" # Mapeia a porta 80 do host para a porta 80 do contêiner
        volumes:
          - ./src:/var/www/html # Monta o diretório de código
          - ./nginx/default.conf:/etc/nginx/conf.d/default.conf # Arquivo de configuração do Nginx
        depends_on:
          - app # Garante que o PHP-FPM inicie antes do Nginx
        networks:
          - app-network
     
      # Serviço MySQL (banco de dados)
      db:
        image: mysql:8.0 # Imagem oficial do MySQL
        environment:
          MYSQL_ROOT_PASSWORD: root
          MYSQL_DATABASE: meu_banco_de_dados
          MYSQL_USER: user
          MYSQL_PASSWORD: password
        volumes:
          - db_data:/var/lib/mysql # Persiste os dados do banco de dados
        networks:
          - app-network
     
    # Redes para comunicação entre os serviços
    networks:
      app-network:
        driver: bridge
     
    # Volumes para persistência de dados
    volumes:
      db_data:
        driver: local
  3. Crie o arquivo Dockerfile para o PHP: Este arquivo instrui o Docker como construir a imagem do seu contêiner PHP.

    # Documentação oficial do Dockerfile: https://docs.docker.com/engine/reference/builder/
    FROM php:8.2-fpm # Imagem base oficial do PHP com FPM (FastCGI Process Manager)
     
    # Instala extensões PHP necessárias (ex: mysqli para MySQL)
    RUN docker-php-ext-install mysqli pdo pdo_mysql
     
    # Define o diretório de trabalho dentro do contêiner
    WORKDIR /var/www/html
     
    # Copia o código da aplicação para o contêiner (será sobrescrito pelo volume)
    # COPY . /var/www/html
     
    # Expõe a porta 9000 para o PHP-FPM
    EXPOSE 9000
  4. Crie a pasta nginx e o arquivo default.conf: Este arquivo configura o Nginx para servir seus arquivos PHP.

    # Arquivo: nginx/default.conf
    # Documentação oficial do Nginx: https://nginx.org/en/docs/
    server {
        listen 80;
        index index.php index.html;
        error_log /var/log/nginx/error.log;
        access_log /var/log/nginx/access.log;
        root /var/www/html; # Diretório raiz do seu projeto
     
        location / {
            try_files $uri $uri/ /index.php?$query_string;
        }
     
        location ~ \.php$ {
            try_files $uri =404;
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass app:9000; # Conecta ao serviço 'app' (PHP-FPM) na porta 9000
            fastcgi_index index.php;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param PATH_INFO $fastcgi_path_info;
        }
    }
  5. Crie a pasta src e um arquivo index.php: Aqui estará o código da sua aplicação PHP.

    <?php
    // Arquivo: src/index.php
    // Documentação oficial do PHP PDO: https://www.php.net/manual/pt_BR/book.pdo.php
     
    echo "<h1>Olá do Docker PHP! 👋</h1>";
    echo "<p>Seu ambiente Docker está funcionando.</p>";
     
    // Tentando conectar ao banco de dados MySQL
    $host = 'db'; // Nome do serviço do banco de dados no docker-compose.yml
    $db   = 'meu_banco_de_dados';
    $user = 'user';
    $pass = 'password';
    $charset = 'utf8mb4';
     
    $dsn = "mysql:host=$host;dbname=$db;charset=$charset";
    $options = [
        PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
        PDO::ATTR_EMULATE_PREPARES   => false,
    ];
     
    try {
        $pdo = new PDO($dsn, $user, $pass, $options);
        echo "<p>Conexão com o banco de dados MySQL estabelecida com sucesso! ✅</p>";
     
        // Exemplo: Criar uma tabela e inserir dados (apenas para teste)
        $pdo->exec("CREATE TABLE IF NOT EXISTS mensagens (
            id INT AUTO_INCREMENT PRIMARY KEY,
            texto VARCHAR(255) NOT NULL,
            data_criacao DATETIME DEFAULT CURRENT_TIMESTAMP
        )");
     
        // Verificar se a tabela está vazia antes de inserir
        $stmt = $pdo->query("SELECT COUNT(*) FROM mensagens");
        if ($stmt->fetchColumn() == 0) {
            $pdo->exec("INSERT INTO mensagens (texto) VALUES ('Primeira mensagem do Docker!')");
            echo "<p>Mensagem de teste inserida no banco de dados. ✨</p>";
        }
     
        // Recuperar e exibir mensagens
        $stmt = $pdo->query("SELECT * FROM mensagens");
        echo "<h2>Mensagens do Banco de Dados:</h2>";
        echo "<ul>";
        while ($row = $stmt->fetch()) {
            echo "<li>ID: {$row['id']} - Texto: {$row['texto']} - Data: {$row['data_criacao']}</li>";
        }
        echo "</ul>";
     
     
    } catch (\PDOException $e) {
        echo "<p style='color: red;'>Erro ao conectar ou interagir com o banco de dados: " . $e->getMessage() . " ❌</p>";
        // Para depuração, você pode querer ver o trace completo:
        // echo "<pre>" . $e->getTraceAsString() . "</pre>";
    }
     
    echo "<p>Data e hora atuais no contêiner PHP: " . date("Y-m-d H:i:s") . "</p>";
    ?>

Estrutura Final do Projeto 📁

meu-projeto-docker/
├── docker-compose.yml
├── Dockerfile
├── nginx/
│   └── default.conf
└── src/
    └── index.php

Rodando o Ambiente Docker 🏃‍♂️

  1. Abra o Terminal/Prompt de Comando na raiz do seu projeto (meu-projeto-docker).

  2. Construa e Inicie os Contêineres:

    docker-compose up --build -d
    • up: Inicia os serviços definidos no docker-compose.yml.
    • --build: Garante que as imagens (especialmente a do PHP que usa Dockerfile) sejam construídas ou atualizadas.
    • -d: Executa os contêineres em modo "detached" (em segundo plano).

    Você verá o Docker baixando as imagens e criando os serviços. Isso pode levar alguns minutos na primeira vez.

  3. Verifique os Contêineres:

    docker-compose ps

    Você deverá ver os serviços app, web e db com status Up.

  4. Acesse no Navegador: Abra seu navegador e acesse http://localhost/ Você deverá ver a mensagem "Olá do Docker PHP!" e a confirmação da conexão com o MySQL.

  5. Parar e Remover os Contêineres: Quando terminar de trabalhar:

    docker-compose down
    • down: Para e remove os contêineres, redes e volumes (exceto volumes nomeados como db_data que são persistentes por padrão, a menos que você adicione --volumes).

    Para remover todos os dados, incluindo volumes persistentes:

    docker-compose down --volumes

4. Exercícios/Desafios 🧑‍💻

Hora de colocar a mão na massa! Escolha uma das abordagens (ou tente ambas) e complete os desafios.

Desafio 1: Configuração com XAMPP (Iniciante)

  • Instale o XAMPP em seu sistema operacional.
  • Inicie os serviços Apache e MySQL no painel de controle do XAMPP.
  • Crie um arquivo phpinfo.php na pasta htdocs e verifique a instalação do PHP acessando http://localhost/phpinfo.php.
  • Crie uma nova pasta meu-primeiro-site dentro de htdocs.
  • Dentro de meu-primeiro-site, crie um arquivo index.php que exiba uma mensagem de boas-vindas personalizada e a data/hora atual.
  • Acesse http://localhost/meu-primeiro-site/ no seu navegador e confirme que sua página PHP está funcionando.
  • (Opcional) Tente acessar o phpMyAdmin (gerenciador de banco de dados do XAMPP) em http://localhost/phpmyadmin/.

Desafio 2: Configuração com Docker (Intermediário)

  • Instale o Docker Desktop em seu sistema operacional e certifique-se de que ele está em execução.
  • Crie uma nova estrutura de pastas para um projeto Docker (meu-projeto-docker-desafio).
  • Crie os arquivos docker-compose.yml, Dockerfile (para PHP), nginx/default.conf e src/index.php conforme os exemplos desta aula.
  • Modifique o arquivo src/index.php para exibir seu nome completo e uma saudação diferente.
  • Adicione um novo echo no index.php que tente conectar ao banco de dados MySQL e exiba uma mensagem de sucesso ou erro (já incluído no exemplo, mas verifique se funciona).
  • No terminal, dentro da pasta raiz do seu projeto, execute docker-compose up --build -d.
  • Acesse http://localhost/ no seu navegador e verifique se a página PHP com a conexão ao MySQL está funcionando.
  • Execute docker-compose down para parar os serviços.
  • (Opcional) Tente adicionar outra extensão PHP ao Dockerfile (ex: gd para manipulação de imagens) e reconstrua a imagem (docker-compose up --build -d). Verifique se a extensão aparece no phpinfo() (você precisaria criar um phpinfo.php dentro de src para isso).

5. Resumo e Próximos Passos 🎯

Nesta aula, você aprendeu a configurar seu ambiente de desenvolvimento PHP usando duas ferramentas poderosas:

  • XAMPP: Rápido, fácil e ideal para iniciantes. É uma solução "tudo em um" que te permite começar a codificar PHP rapidamente.
  • Docker: Moderno, isolado e portátil. Oferece controle total sobre o ambiente e é amplamente utilizado em ambientes de produção e equipes de desenvolvimento.

A escolha entre XAMPP e Docker depende do seu nível de experiência e das necessidades do projeto. Para este curso, ambas as opções são válidas para você começar.

Próximos Passos:

  • Fundamentos da Linguagem PHP: Agora que seu ambiente está pronto, a próxima aula focará nos conceitos básicos da sintaxe PHP.
  • Controle de Versão (Git): Aprender a usar Git é essencial para qualquer desenvolvedor.
  • Editor de Código: Instale e configure um bom editor de código como VS Code para aumentar sua produtividade.

Parabéns por configurar seu ambiente! Você deu um grande passo rumo a se tornar um desenvolvedor PHP. Continue praticando! 💪

© 2025 Escola All Dev. Todos os direitos reservados.

Configurando o ambiente de desenvolvimento (XAMPP/Docker) - Fundamentos do PHP | escola.all.dev.br