Base de Conhecimento

Instalar PHP no Ubuntu: PHP-FPM com Nginx na VPS

  • php, ubuntu, php-fpm, nginx, vps, linux
  • Usuários acharam útil: 0

Veja como instalar o PHP-FPM no Ubuntu, conferir a versão e o serviço, ligar ao Nginx pelo socket, testar com phpinfo, achar o php.ini certo e corrigir erros comuns.

Por Redação Eleven Host · @robson.direitodigital · 28 de outubro de 2026 · 9 min de leitura

Arte da Eleven Host: janela de terminal com o título: Instalar PHP no Ubuntu: PHP-FPM com Nginx na VPS

Capa da Redação Eleven Host para o guia: Instalar PHP no Ubuntu: PHP-FPM com Nginx na VPS Arte: Eleven Host

Para instalar PHP no Ubuntu com Nginx, rode sudo apt install php-fpm, confira a versão e o serviço, ligue o Nginx ao socket do PHP-FPM e teste com um arquivo phpinfo temporário.

Este guia usa o PHP-FPM, o serviço que roda o PHP separado do servidor web. Segundo o manual do PHP, o FPM (FastCGI Process Manager) é uma implementação FastCGI do PHP com recursos úteis para sites muito acessados, como pools de processos com usuários e arquivos php.ini diferentes e registro de scripts lentos. O Nginx não executa PHP sozinho: ele entrega os arquivos .php ao FPM e devolve o resultado ao visitante. Os nomes seudominio.com.br e 203.0.113.10 são exemplos. Troque pelos seus.

Antes de começar

Você precisa de um servidor Ubuntu e de um usuário que use sudo. Se ainda não tem esse usuário, siga primeiro o guia Criar usuário sudo na VPS Ubuntu: passo a passo.

O Nginx também precisa estar instalado e respondendo. O guia Instalar Nginx no Ubuntu: passo a passo na VPS mostra como fazer isso. Se preferir ir direto, o comando é sudo apt install nginx, que instala e já inicia o servidor, segundo a documentação do Ubuntu.

Uma observação sobre as fontes: as páginas oficiais do Ubuntu e do PHP mostram a instalação do PHP junto com o Apache. A combinação com Nginx e PHP-FPM, que é a deste guia, junta o que o manual do PHP diz sobre o FPM com o que o nginx.org diz sobre o módulo FastCGI. Os caminhos de arquivos do Ubuntu usados adiante são os do empacotamento da distribuição, por isso confira cada um no seu servidor antes de editar.

1. Instale o PHP-FPM

Primeiro atualize a lista de pacotes. O manual do PHP indica rodar o apt update antes de instalar:

sudo apt update

Depois instale o pacote do PHP-FPM:

sudo apt install php-fpm

O pacote php-fpm traz a versão do PHP que o seu release do Ubuntu define. Pelas páginas de manual do Ubuntu, o Ubuntu 24.04 LTS traz o pacote php8.3-fpm (versão 8.3.6) e o Ubuntu 22.04 LTS traz o php8.1-fpm (versão 8.1.2). Nos comandos abaixo, use o número da versão que o seu servidor instalou.

2. Instale as extensões do PHP

A sua aplicação pode pedir extensões do PHP. O manual do PHP dá como exemplo o comando apt install php-mysql php-curl e cita MySQL, cURL e GD entre as extensões prováveis. A documentação do Ubuntu cita php-mysql e php-pgsql. Para ver o que existe no repositório, use a busca do apt:

apt-cache search php

Como exemplo, o comando abaixo instala algumas extensões como exemplo. A lista depende do que a sua aplicação exige, então consulte a documentação dela e ajuste:

sudo apt install php-mysql php-curl php-gd php-xml php-mbstring php-zip

Segundo o manual do PHP, o APT adiciona sozinho as linhas extension=... nos arquivos php.ini, mas é preciso reiniciar para as mudanças valerem. Com o FPM, quem reinicia é o serviço do FPM, o que você faz no passo 5.

Quer conhecer os planos de VPS? O Plano Bronze da VPS sai a partir de R$ 17,00/mês; confira na loja o que cada plano inclui. Ver planos de VPS

3. Confira a versão e o serviço

Veja a versão do PHP de linha de comando:

php -v

Agora veja o estado do serviço do FPM. No Ubuntu 24.04 o nome é php8.3-fpm; no 22.04, php8.1-fpm:

sudo systemctl status php8.3-fpm

Procure a linha active (running). Se o serviço estiver parado, inicie com sudo systemctl start php8.3-fpm.

A página de manual do FPM também documenta uma opção para testar a configuração do próprio FPM, a -t. No Ubuntu o programa leva a versão no nome, como php-fpm8.3. Rode sudo php-fpm8.3 -t e leia o resultado.

O FPM não deve ficar acessível a uma rede não confiável. O manual do PHP diz que o php-fpm não pode ser alcançado por esse tipo de rede, e o acesso é limitado pelas diretivas listen e listen.allowed_clients. Neste guia o Nginx fala com o FPM por um socket Unix.

4. Ligue o Nginx ao PHP-FPM

Abra o arquivo do seu site. No site padrão do Ubuntu, ele fica em /etc/nginx/sites-available/default; se você criou um arquivo para o seu domínio, abra esse:

sudo nano /etc/nginx/sites-available/default

Dentro do bloco server, confira a linha index e acrescente o bloco location do PHP. A linha index diz quais arquivos abrem quando o endereço termina em barra, e o index.php precisa estar nela:

index index.php index.html;

location ~ \.php$ {

include snippets/fastcgi-php.conf;

fastcgi_pass unix:/run/php/php8.3-fpm.sock;

}

Em palavras simples:

  • location ~ \.php$ pega os pedidos de arquivos que terminam em .php.
  • fastcgi_pass diz onde está o PHP. Segundo o nginx.org, ele aceita um endereço com porta, como localhost:9000, ou o caminho de um socket Unix, como é o caso aqui.
  • include snippets/fastcgi-php.conf carrega um arquivo de apoio do empacotamento do Ubuntu para o FastCGI. Segundo o nginx.org, o PHP usa o SCRIPT_FILENAME para achar o script.

O caminho do socket muda com a versão do PHP. No Ubuntu 22.04, por exemplo, o nome traz o 8.1 no lugar do 8.3. Confira o nome exato no seu servidor com ls /run/php/.

5. Teste a configuração e recarregue

Peça ao Nginx que confira a sintaxe do arquivo antes de aplicar:

sudo nginx -t

Se a saída disser que a sintaxe está correta (syntax is ok), recarregue o Nginx:

sudo systemctl reload nginx

Segundo o nginx.org, o comando nginx -s reload também recarrega a configuração. Se você instalou extensões no passo 2, reinicie o FPM para elas valerem:

sudo systemctl restart php8.3-fpm

Se o teste do Nginx apontar erro, leia a mensagem. Corrija e rode o teste de novo antes de recarregar.

6. Teste com um arquivo phpinfo e apague depois

A documentação do Ubuntu ensina o teste com um arquivo phpinfo.php que contém uma única linha. No Nginx do Ubuntu, a pasta padrão do site é /var/www/html. Crie o arquivo:

echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/phpinfo.php

Abra o endereço no navegador, trocando pelo IP do seu servidor ou pelo domínio:

http://203.0.113.10/phpinfo.php

Deve aparecer a página de informações do PHP, com a versão do PHP. Se o navegador baixar o arquivo em vez de mostrar a página, o bloco location ~ \.php$ não está ativo: volte ao passo 4.

Quando terminar o teste, apague o arquivo:

sudo rm /var/www/html/phpinfo.php

Essa página mostra detalhes do servidor a quem a abrir, e por isso ela não deve ficar publicada.

Onde fica o php.ini

O manual do PHP mostra a pasta /etc/php/8.x/ com um subdiretório por modo de uso. Em cada um há um php.ini próprio, como o apache2/php.ini e o cli/php.ini. Na instalação com FPM, o arquivo que vale para o site fica na pasta fpm:

/etc/php/8.3/fpm/php.ini

O arquivo da pasta cli vale só para o PHP rodado no terminal. Alterar o cli/php.ini não muda o arquivo que o FPM usa. Para confirmar qual arquivo está em uso, abra a página phpinfo e procure a linha "Loaded Configuration File". Depois de editar o php.ini do FPM, reinicie o serviço com sudo systemctl restart php8.3-fpm.

Um caso prático é o limite de upload de arquivos, que fica nesse arquivo. O guia Aumentar limite de upload do WordPress: passo a passo mostra quais diretivas mudar.

Erros comuns

  • 502 Bad Gateway: o Nginx não conseguiu falar com o FPM. Veja se o serviço está ativo e se o caminho do socket no fastcgi_pass é o que existe em /run/php/. O guia Erro 502 Bad Gateway: o que é e como resolver na VPS detalha o diagnóstico.
  • O navegador baixa o arquivo .php: falta o bloco location ~ \.php$, ou o Nginx não foi recarregado depois de editar.
  • Função ou extensão "undefined": o manual do PHP indica conferir se o php.ini certo está sendo carregado e se o serviço foi reiniciado depois de instalar a extensão.
  • Nome da versão errado: comandos com php8.3-fpm não funcionam num servidor que instalou o 8.1. Use o nome que aparece no seu servidor.
  • Página em branco no phpinfo: confira o nginx -t e o log de erros do Nginx, na pasta /var/log/nginx (confira o caminho no seu servidor).

Checklist: PHP-FPM com Nginx

  • Atualizei a lista de pacotes e instalei o php-fpm.
  • Instalei as extensões que a minha aplicação pede.
  • Conferi a versão com php -v e o serviço com systemctl status.
  • Acrescentei o bloco location ~ \.php$ com o socket certo.
  • Rodei sudo nginx -t antes de recarregar.
  • Testei com o phpinfo e apaguei o arquivo depois.
  • Sei qual php.ini vale para o site: o da pasta fpm.

Quer registrar o domínio do seu site? Busque o nome e veja a disponibilidade na loja. Registrar domínio

Perguntas frequentes

Qual versão do PHP vem no Ubuntu?

Depende do release. Pelas páginas de manual do Ubuntu, o 24.04 LTS traz o PHP 8.3 (pacote php8.3-fpm) e o 22.04 LTS traz o PHP 8.1 (pacote php8.1-fpm). Confira com php -v depois de instalar.

Por que usar PHP-FPM e não o módulo do Apache?

O módulo do Apache é o caminho que as páginas do Ubuntu e do PHP mostram para o Apache. Com o Nginx, os arquivos .php vão ao PHP-FPM por FastCGI, com fastcgi_pass, como neste guia.

Preciso reiniciar o FPM depois de instalar uma extensão?

Sim. O manual do PHP avisa que o servidor precisa reiniciar para as mudanças valerem. Com o FPM, reinicie o serviço, por exemplo com sudo systemctl restart php8.3-fpm.

Posso deixar o arquivo phpinfo no servidor?

Não é uma boa ideia. A página mostra detalhes do servidor a quem a abrir. Apague o arquivo assim que terminar o teste.

Esta resposta lhe foi útil?

Artigos Relacionados