Instalar o PHP e as suas extensões no Debian 13 para Laravel
verificado a 2 Setembro 2026 · 4 min
O Debian 13 fornece o PHP 8.4 nos repositórios oficiais: sudo apt install php-cli php-fpm php-mbstring php-xml php-curl php-zip php-bcmath php-intl php-mysql chega para o Laravel 13, sem repositório externo. Atenção a dois pacotes citados sem razão: o php-json deixou de servir para alguma coisa a partir do PHP 8.0, e o que é preciso é o php-mysql, não o php-mysqli, porque o Laravel passa por PDO.
O Laravel 13 exige PHP 8.2 no mínimo e um punhado de extensões. Boa notícia: o Debian 13 «trixie» traz o PHP 8.4 nos repositórios oficiais, o que torna o repositório externo Sury desnecessário no caso corrente.
Passos executados num contentor Debian 13 limpo, a 2 de setembro de 2026. Este capítulo faz parte da instalação do Laravel num servidor Debian, no percurso Desenvolvimento web.
Ver o que o teu Debian já propõe
Antes de acrescentar seja que repositório for, olha para o que a distribuição oferece:
sudo apt update
apt-cache policy php-cliphp-cli:
Installed: (none)
Candidate: 2:8.4+96
Version table:
2:8.4+96 500
500 http://deb.debian.org/debian trixie/main arm64 PackagesO PHP 8.4 está disponível. Chega e sobra para o Laravel 13, e poupa-te um repositório externo para manter. A correspondência entre a versão do Debian e a versão do PHP fornecida:
| Debian | PHP dos repositórios oficiais | Chega para o Laravel 13? |
|---|---|---|
| 13 «trixie» | 8.4 | Sim |
| 12 «bookworm» | 8.2 | Sim, no mínimo exigido |
| 11 «bullseye» | 7.4 | Não, é preciso um repositório externo |
Instalar o PHP e as extensões
Um único comando cobre a base exigida pelo Laravel, mais os drivers de base de dados:
sudo apt install -y php-cli php-fpm \
php-mbstring php-xml php-curl php-zip \
php-bcmath php-intl \
php-mysql php-sqlite3 \
unzip curl ca-certificatesDuas extensões comuns não constam desta lista porque dependem das tuas escolhas de arquitetura: o php-redis, tratado no capítulo sobre o Redis, e o php-gd ou o php-imagick para o tratamento de imagens.
Confirma a versão obtida:
php -vPHP 8.4.24 (cli) (built: Jul 31 2026 05:11:11) (NTS)Verifica depois que todas as extensões esperadas pelo Laravel estão presentes:
for e in ctype curl dom fileinfo filter hash mbstring openssl \
pcre pdo session tokenizer xml bcmath intl zip; do
printf "%-10s %s\n" "$e" "$(php -m | grep -qix "$e" && echo OK || echo MANQUANT)"
doneNa instalação de teste, as dezasseis linhas devolvem OK. Várias destas extensões estão compiladas no binário PHP do Debian e não têm pacote próprio: aparecem à mesma no php -m.
Dois pacotes citados sem razão
Desde o PHP 8.0, a extensão JSON está compilada no binário e já não pode ser desativada. O pacote php-json subsiste no Debian como simples pacote de transição. Instalá-lo não parte nada, mas também não traz nada.
O Laravel passa por PDO, não por mysqli. O que é preciso é o php-mysql, e esse fornece os dois. Confirma o que o PHP vê realmente:
php -r 'echo implode(", ", PDO::getAvailableDrivers()), PHP_EOL;'mysql, sqliteSe o mysql não aparecer nesta lista, o Laravel não conseguirá ligar-se ao MySQL nem ao MariaDB, sejam quais forem as definições do ficheiro .env.
Afinar o PHP para uma aplicação web
Coexistem dois ficheiros, com valores diferentes: o da linha de comandos e o do servidor web. Mexer no errado é uma fonte clássica de confusão.
/etc/php/8.4/cli/php.ini # artisan, composer, tarefas agendadas
/etc/php/8.4/fpm/php.ini # pedidos servidos pelo nginx ou ApacheAs definições que contam para uma aplicação Laravel estão no ficheiro do FPM:
memory_limit = 256M
upload_max_filesize = 20M
post_max_size = 21M
max_execution_time = 60O post_max_size tem de continuar acima do upload_max_filesize, senão um envio no tamanho máximo é rejeitado antes de chegar à aplicação. Recarrega em seguida o serviço, sem o que os valores ficam na mesma:
sudo systemctl reload php8.4-fpm
php -i | grep memory_limit # valor da CLI
sudo -u www-data php-fpm8.4 -i | grep memory_limitCom o PHP no sítio, a etapa seguinte é a instalação do Composer.
Instalar outra versão do PHP com o repositório Sury
Este desvio só se justifica se precisares de uma versão que o Debian não fornece: PHP 8.5 no Debian 13, ou PHP 8.2 num Debian 11. O método mudou: o apt-key foi removido no Debian 12, é preciso passar por um chaveiro dedicado.
sudo apt install -y curl ca-certificates
sudo curl -fsSLo /etc/apt/keyrings/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb [signed-by=/etc/apt/keyrings/php.gpg] https://packages.sury.org/php/ $(. /etc/os-release && echo $VERSION_CODENAME) main" \
| sudo tee /etc/apt/sources.list.d/php.list
sudo apt update
sudo apt install -y php8.5-cli php8.5-fpm php8.5-mbstring php8.5-xml php8.5-curl php8.5-zip php8.5-bcmath php8.5-intl php8.5-mysqlCom várias versões instaladas, escolhe a que responde ao comando php:
sudo update-alternatives --config phpVais ter de o manter: a cada subida de versão do Debian, confirmar que o repositório acompanha, e vigiar as atualizações de segurança à parte. Se os repositórios oficiais chegarem, fica por eles.
Erros frequentes
systemctl reload php8.4-fpm.