Qual versão do PHP usar no Moodle: tabela de 4.1 a 5.3 e comandos

"Qual versão do PHP eu uso no Moodle?" é das perguntas mais buscadas por quem administra a plataforma, e com razão: PHP fora da faixa suportada é a causa número um de erro 500 depois de uma atualização, seja do Moodle, seja da hospedagem.
Abaixo, a tabela oficial, a lógica das "versões ponte" para atualizar sem quebrar e os comandos para conferir e trocar o PHP no servidor.
Tabela: PHP suportado por versão do Moodle
| Moodle | PHP mínimo | PHP máximo |
|---|---|---|
| 5.3 (LTS) | 8.3 | 8.4 |
| 5.2 | 8.3 | 8.4 |
| 5.1 | 8.2 | 8.4 |
| 5.0 | 8.2 | 8.4 |
| 4.5 (LTS) | 8.1 | 8.3 |
| 4.4 | 8.1 | 8.3 |
| 4.1 (LTS) | 7.4 | 8.1 |
Fonte: política oficial de PHP do Moodle. No 5.3, o PHP 8.5 aparece só para desenvolvimento. Datas de suporte de cada versão em versões do Moodle.
Requisitos que vão além da versão
- PHP 64 bits: obrigatório nas versões atuais.
- Extensão sodium: obrigatória.
max_input_varsde pelo menos 5000: obrigatório nas versões recentes, como 5.1 e 5.3. Com valor menor, formulários grandes (como permissões e notas) salvam pela metade.- Extensões de uso comum: intl, mbstring, xml, zip, gd, curl, soap e o driver do seu banco (mysqli ou pgsql).
Versões ponte: como atualizar sem quebrar
O PHP e o Moodle precisam subir em escada, sempre passando por uma versão de PHP que sirva para os dois lados:
- Do 4.1 para o 4.5: o PHP 8.1 é a ponte (é o máximo do 4.1 e o mínimo do 4.5).
- Do 4.5 para o 5.3: o PHP 8.3 é a ponte (máximo do 4.5 e mínimo do 5.3).
- Atenção: para atualizar para o 5.3, o site precisa já estar no 4.4 ou superior. Quem está no 4.1 passa antes pelo 4.5.
Ordem segura: ajuste o PHP para a versão ponte, atualize o Moodle, depois suba o PHP de novo se quiser. Contamos um caso real em upgrade encadeado de um Moodle 3.x.
Comandos: conferir o PHP do servidor
Versão do PHP da linha de comando:
php -v
Extensões que o Moodle usa:
php -m | grep -i -E "sodium|intl|mbstring|xml|zip|gd|curl|soap|mysqli|pgsql"
Configurações importantes:
php -i | grep -E "max_input_vars|memory_limit|upload_max_filesize|post_max_size"
No navegador, o próprio Moodle mostra o PHP do site em Administração do site > Servidor > Informações do PHP e verifica os requisitos em Administração do site > Servidor > Ambiente.
O erro mais comum: dois PHPs diferentes
Em muitos servidores, o PHP do site (FPM) e o PHP da linha de comando são versões diferentes. O site funciona, mas o cron roda com outro PHP e falha. Para conferir quais versões estão instaladas no Ubuntu:
ls /usr/bin/php*
update-alternatives --list php
Para fixar a versão da linha de comando:
sudo update-alternatives --set php /usr/bin/php8.3
E, no cron, chame o PHP pelo caminho completo, para não depender do padrão do sistema:
* * * * * /usr/bin/php8.3 /caminho/do/moodle/admin/cli/cron.php >/dev/null 2>&1
A partir do Moodle 5.1, confira o caminho dos scripts conforme a nova estrutura com a pasta public.
Instalar o PHP 8.3 no Ubuntu
No Ubuntu 24.04, o PHP 8.3 é o padrão do sistema:
sudo apt update
sudo apt install php8.3-fpm php8.3-cli php8.3-intl php8.3-mbstring php8.3-xml \
php8.3-zip php8.3-gd php8.3-curl php8.3-soap php8.3-mysql php8.3-pgsql
Depois de trocar a versão ou o php.ini, reinicie o PHP-FPM:
sudo systemctl restart php8.3-fpm
php.ini: valores de referência
O único valor obrigatório é o max_input_vars. Os outros são pontos de partida comuns, a ajustar conforme o uso:
; php.ini (em hospedagem compartilhada, muitas vezes .user.ini)
max_input_vars = 5000
memory_limit = 256M
upload_max_filesize = 256M
post_max_size = 256M
max_execution_time = 300
Limites de upload têm mais de um lugar para ajustar. Veja limite de upload no Moodle.
Hospedagem compartilhada
No painel da hospedagem, a versão do PHP costuma ser escolhida por domínio, e o .user.ini substitui o php.ini. O ponto de atenção é a hospedagem atualizar o PHP sozinha. Antes de aceitar uma troca, confira a tabela acima. Mais detalhes em instalar Moodle na hospedagem compartilhada.
Perguntas frequentes
Qual versão do PHP o Moodle 5.3 precisa?
O Moodle 5.3 exige no mínimo PHP 8.3 e também suporta o PHP 8.4, sempre em 64 bits, com a extensão sodium e max_input_vars de pelo menos 5000.
Qual versão do PHP usar no Moodle 4.5?
O Moodle 4.5 suporta do PHP 8.1 ao 8.3. O PHP 8.3 é a melhor escolha, porque é também o mínimo do Moodle 5.3 e facilita a próxima atualização.
Posso usar PHP 8.5 no Moodle?
Não em produção. Na data deste post, o PHP 8.5 é indicado só para desenvolvimento no Moodle 5.3.
Por que o Moodle quebrou depois que a hospedagem atualizou o PHP?
Cada versão do Moodle suporta uma faixa de PHP. Se a hospedagem subiu o PHP para fora dessa faixa, aparecem erro 500 ou página em branco. A solução é voltar para uma versão compatível ou atualizar o Moodle.
Quanto tempo leva para ajustar o PHP do Moodle?
Com acesso ao servidor, trocar a versão, ajustar o php.ini e testar costuma caber em uma hora técnica.