PHP é uma linguagem de programação de código aberto, de uso geral e especialmente popular no desenvolvimento web. O código PHP é executado no servidor: ele pode validar dados, consultar bancos, iniciar sessões, enviar e-mails e gerar HTML ou JSON. O navegador recebe o resultado, não o código-fonte PHP. WordPress, WHMCS e muitos sistemas de gestão são construídos com essa tecnologia.
PHP, HTML, CSS e JavaScript: qual é a diferença?
| Tecnologia | Papel mais comum | Onde executa |
|---|---|---|
| HTML | Estrutura e conteúdo da página | Navegador |
| CSS | Aparência e layout | Navegador |
| JavaScript | Interatividade e também aplicações de servidor | Navegador ou runtime |
| PHP | Regras, integrações, sessões, banco e geração da resposta | Servidor |
Uma página pode combinar as quatro tecnologias. O PHP monta a resposta no servidor, enquanto HTML, CSS e JavaScript formam a experiência entregue ao visitante.
Primeiro exemplo seguro
<?php
declare(strict_types=1);
$nome = $_GET['nome'] ?? 'visitante';
echo 'Olá, ' . htmlspecialchars($nome, ENT_QUOTES, 'UTF-8');
htmlspecialchars() transforma caracteres especiais antes de inserir um valor não confiável no HTML, reduzindo o risco de XSS nesse contexto. A proteção correta depende do destino: HTML, atributo, URL, JavaScript, SQL e shell exigem técnicas diferentes. Nunca copie entrada do usuário diretamente para uma consulta ou comando.
Estrutura mínima de um projeto
Em aplicações modernas, mantenha somente o diretório público acessível pela web. Código, dependências, arquivos de ambiente, logs e backups devem ficar fora do document root ou ser bloqueados pelo servidor. Frameworks normalmente usam um controlador frontal como public/index.php.
projeto/
??? public/
? ??? index.php
??? src/
??? config/
??? storage/
??? vendor/
??? composer.json
??? composer.lock
Escolher a versão do PHP no cPanel
- Abra Software > MultiPHP Manager.
- Marque o domínio correto.
- Selecione uma versão suportada pela hospedagem e pela aplicação.
- Aplique e teste as páginas públicas, login, tarefas agendadas e integrações.
- Consulte o log de erros e reverta se houver incompatibilidade.
Não escolha uma versão apenas por ser a mais nova ou por um tutorial antigo recomendá-la. Confira os requisitos do sistema, plugins e bibliotecas e use uma versão que ainda receba correções de segurança. Em VPS, planeje atualização do runtime e das extensões como parte da manutenção do servidor.
Configurações importantes
O MultiPHP INI Editor pode ajustar diretivas permitidas por domínio. Entre as mais conhecidas estão memory_limit, upload_max_filesize, post_max_size, max_execution_time, date.timezone e exibição de erros. O upload efetivo depende de vários limites; post_max_size deve comportar a requisição completa.
display_errors=Off, registre falhas em local protegido e entregue ao visitante uma mensagem genérica. Logs podem revelar caminhos, consultas e dados sensíveis.Extensões e Composer
Extensões como mbstring, intl, curl, openssl, pdo_mysql, zip ou gd dependem da aplicação. No cPanel, as disponíveis são administradas pelo provedor. Em VPS, instale apenas pacotes da versão ativa e reinicie o serviço apropriado quando necessário.
Composer gerencia bibliotecas PHP. Versione composer.json e composer.lock, não edite vendor manualmente e faça a instalação de produção sem pacotes de desenvolvimento:
composer validate
composer install --no-dev --prefer-dist --optimize-autoloader
Execute Composer como o usuário da aplicação, nunca como root em um diretório publicado. Revise alertas de segurança e licenças das dependências antes de atualizar.
Banco de dados com PDO e parâmetros
<?php
$pdo = new PDO($dsn, $usuario, $senha, [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
]);
$consulta = $pdo->prepare('SELECT id, nome FROM clientes WHERE email = ?');
$consulta->execute([$email]);
$cliente = $consulta->fetch(PDO::FETCH_ASSOC);
Prepared statements separam dados da instrução SQL e ajudam a prevenir injeção. A conta do banco deve ter somente os privilégios necessários. Credenciais não devem ficar em repositório, página pública ou mensagem de erro; use variáveis de ambiente ou o mecanismo de segredos da aplicação.
Formulários, sessões e arquivos
- valide formato, tamanho e faixa no servidor, mesmo quando o navegador já valida;
- use token CSRF em operações que alteram dados;
- regenere o identificador de sessão após login e configure cookies
Secure,HttpOnlyeSameSiteconforme o fluxo; - armazene senhas com
password_hash()e confira compassword_verify(); - não confie no nome ou tipo informado pelo upload;
- grave uploads fora do diretório executável, gere nomes aleatórios e limite tamanho;
- para e-mail, use biblioteca mantida e SMTP autenticado em vez de montar cabeçalhos manualmente.
Desenvolvimento e produção
Use um ambiente local ou de homologação compatível, dados anonimizados e controle de versão. Não edite diretamente a única cópia em produção. Testes automatizados, análise estática e revisão de código reduzem regressões. Variáveis como URL, credenciais e chaves devem mudar por ambiente sem alterar o código.
Publicação recomendada
- Faça backup do código, banco e arquivos enviados.
- Teste a versão e as extensões em homologação.
- Envie uma release completa por Git ou processo controlado.
- Instale dependências pelo lockfile.
- Execute migrations revisadas e compatíveis com rollback.
- Aponte o document root para
publicquando a aplicação usar essa estrutura. - Ajuste somente as permissões necessárias; evite
777. - Limpe ou aqueça caches conforme a documentação do sistema.
- Teste HTTPS, autenticação, formulários, banco, e-mail e cron.
- Monitore erros e desempenho após a mudança.
Diagnóstico básico
php -v
php --ini
php -m
php -r "echo PHP_VERSION, PHP_EOL;"
Esses comandos mostram o PHP da linha de comando, que pode ser diferente daquele usado pelo site. Para uma página web, prefira as informações do painel ou um script temporário, protegido e removido logo após o teste. Nunca deixe phpinfo() público, pois ele expõe detalhes do ambiente.
| Sintoma | Primeiras verificações |
|---|---|
| Página em branco ou erro 500 | log, sintaxe, versão, extensão e permissões |
| Classe não encontrada | autoloader, vendor, namespace e diferença de maiúsculas |
| Conexão recusada | host, porta, serviço, firewall e credencial sem expô-la |
| Upload falha | limites PHP, formulário, espaço, permissão e regra do servidor web |
| Funciona no terminal, não no site | SAPI, arquivo INI, usuário, ambiente e diretório de trabalho |
Checklist de segurança contínua
- mantenha PHP, framework, CMS e dependências em versões suportadas;
- use HTTPS, cabeçalhos adequados, MFA no painel e senhas exclusivas;
- restrinja escrita, banco e funções administrativas;
- trate toda entrada como não confiável e escape na saída correta;
- não armazene segredos no código nem em backup sem proteção;
- monitore logs, integridade, consumo e alertas;
- mantenha backup externo e teste a restauração.
Referências oficiais: introdução ao PHP, versões com suporte e documentação do Composer.
Continue no guia sobre como alterar a versão do PHP, veja como diagnosticar erro 500 ou conheça o serviço de desenvolvimento de sistemas web.
Recursos relacionados
Continue com materiais e serviços relacionados ao tema deste guia.