Fundamentos do PHP
Configurando o ambiente de desenvolvimento (XAMPP/Docker)
Aprenda sobre configurando o ambiente de desenvolvimento (xampp/docker)
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:
- XAMPP: Uma solução "tudo em um" para quem busca simplicidade e rapidez.
- 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 🛠️
- Download: Acesse o site oficial do XAMPP: https://www.apachefriends.org/index.html
- Escolha sua Plataforma: Baixe a versão correspondente ao seu sistema operacional (Windows, Linux, ou macOS).
- Execute o Instalador: Siga as instruções do instalador. Geralmente, você pode aceitar as configurações padrão.
- Windows: Execute o
.exee siga o assistente. - macOS: Arraste o XAMPP para a pasta Aplicativos.
- Linux: Execute o script
.run(pode ser necessáriochmod +xantes).
- Windows: Execute o
- Inicie o Painel de Controle: Após a instalação, localize e abra o "XAMPP Control Panel".
- 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:
-
Localize a pasta
htdocs:- Windows:
C:\xampp\htdocs\ - macOS:
/Applications/XAMPP/xamppfiles/htdocs/ - Linux:
/opt/lampp/htdocs/
- Windows:
-
Crie um arquivo: Dentro da pasta
htdocs, crie um novo arquivo chamadoinfo.php. -
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(); ?> -
Acesse no Navegador: Abra seu navegador web e digite:
http://localhost/info.phpSe 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.
-
Crie uma pasta: Dentro de
htdocs, crie uma nova pasta chamadameuprojeto. -
Crie um arquivo: Dentro de
meuprojeto, crie um arquivo chamadoindex.php. -
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>"; ?> -
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 🚀
- Docker Desktop: Instale o Docker Desktop para o seu sistema operacional.
- Download: https://www.docker.com/products/docker-desktop/
- Siga as instruções de instalação para o seu sistema. Após a instalação, certifique-se de que o Docker Desktop esteja em execução.
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.
-
Crie uma pasta para o projeto:
mkdir meu-projeto-docker && cd meu-projeto-docker -
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 -
Crie o arquivo
Dockerfilepara 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 -
Crie a pasta
nginxe o arquivodefault.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; } } -
Crie a pasta
srce um arquivoindex.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 🏃♂️
-
Abra o Terminal/Prompt de Comando na raiz do seu projeto (
meu-projeto-docker). -
Construa e Inicie os Contêineres:
docker-compose up --build -dup: Inicia os serviços definidos nodocker-compose.yml.--build: Garante que as imagens (especialmente a do PHP que usaDockerfile) 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.
-
Verifique os Contêineres:
docker-compose psVocê deverá ver os serviços
app,webedbcom statusUp. -
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. -
Parar e Remover os Contêineres: Quando terminar de trabalhar:
docker-compose downdown: Para e remove os contêineres, redes e volumes (exceto volumes nomeados comodb_dataque 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.phpna pastahtdocse verifique a instalação do PHP acessandohttp://localhost/phpinfo.php. - Crie uma nova pasta
meu-primeiro-sitedentro dehtdocs. - Dentro de
meu-primeiro-site, crie um arquivoindex.phpque 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.confesrc/index.phpconforme os exemplos desta aula. - Modifique o arquivo
src/index.phppara exibir seu nome completo e uma saudação diferente. - Adicione um novo
echonoindex.phpque 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 downpara parar os serviços. - (Opcional) Tente adicionar outra extensão PHP ao
Dockerfile(ex:gdpara manipulação de imagens) e reconstrua a imagem (docker-compose up --build -d). Verifique se a extensão aparece nophpinfo()(você precisaria criar umphpinfo.phpdentro desrcpara 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! 💪