Como Visualizar as Definições do PHP no Alojamento: phpinfo, cPanel, CLI e php-fpm
PHP · phpinfo · cPanel · php-fpm · Alojamento Partilhado · .user.ini · EasyApache 4 | ✎ Duarte Spínola | 13 de Junho de 2026
Está a tentar instalar um plugin WordPress que pede upload_max_filesize = 64M e o alojamento tem 2M. Precisa de confirmar a versão do PHP, as extensões carregadas e o caminho efectivo do php.ini. Há 6 métodos para o fazer, cada um adequado a um contexto diferente: phpinfo() em página web (visual, completo), php -i na linha de comandos, cPanel MultiPHP INI Editor, phpinfo filtrado por secção, .user.ini em PHP-FPM, e verificação de versão e módulos. Este artigo cobre todos — incluindo a segurança pós-phpinfo que quase toda a gente esquece.
ℹ Ambientes testados
Ubuntu 22.04 LTS (PHP 8.1.29 + PHP-FPM 8.1.29 + Apache 2.4.52), cPanel 110 (EasyApache 4 + MultiPHP 8.1), CentOS 7 + PHP 7.4 (legado), Windows 11 + PHP 8.2 (XAMPP 8.2.4), WordPress 6.5 com 50 plugins típicos. Todos os exemplos validados em 2026-06-13. Aplica-se também a Debian 12, RHEL 9, cPanel 102+, DirectAdmin e Plesk.
Neste artigo
- O que é a configuração do PHP e porque importa
- Cenários onde se aplica
- Diagnóstico prévio
- Método 1 — phpinfo() em página web
- Método 2 — php -i (linha de comandos)
- Método 3 — cPanel MultiPHP INI Editor (sem código)
- Método 4 — phpinfo filtrado por secção
- Método 5 — .user.ini (PHP-FPM em alojamento partilhado)
- Método 6 — Verificar versão do PHP e módulos
- Verificação
- Erros comuns (10 situações)
- Boas práticas
1. O que é a Configuração do PHP e Porque Importa
O PHP lê um ficheiro php.ini no arranque que define mais de 300 directivas. As mais consultadas em contexto de helpdesk e alojamento:
| Directiva | Função | Valor típico em produção |
|---|---|---|
memory_limit |
RAM máxima por processo | 128M, 256M, 512M |
upload_max_filesize |
Tamanho máximo de upload | 8M, 32M, 64M, 128M |
post_max_size |
Tamanho de payload POST (incluindo uploads) | 8M, 32M, 64M, 128M |
max_execution_time |
Tempo máximo de execução de um script | 30, 60, 120, 300 |
max_input_time |
Tempo máximo a parsear input | 60, 120, -1 (ilimitado) |
max_input_vars |
Nº de variáveis GET/POST/COOKIE | 1000, 3000, 5000 |
date.timezone |
Fuso horário padrão | Europe/Lisbon, UTC |
display_errors |
Mostrar erros no browser | Off (produção) |
opcache.enable |
Activar OPcache | 1 (sempre) |
opcache.memory_consumption |
Memória OPcache | 64, 128, 256 |
session.cookie_secure |
Cookies só em HTTPS | 1 (com HTTPS) |
session.cookie_httponly |
Cookies sem acesso JavaScript | 1 (sempre) |
ℹ Porquê esta tabela?
A maior parte dos problemas de “PHP não funciona” cai sobre 4–5 directivas. Memorizar esta tabela poupa horas de suporte.
2. Cenários onde se Aplica
| Estado | Cenário |
|---|---|
| Testado | Instalação WordPress, Joomla, PrestaShop precisa de valores mínimos (memory_limit, upload_max_filesize) |
| Testado | Plugin WordPress reporta “excedeu memory limit” |
| Testado | Migrar site de um servidor para outro e precisar de replicar configurações |
| Testado | Confirmar versão do PHP antes de actualizar tema ou plugin |
| Testado | Suporte técnico pede “qual o valor de X directiva” para troubleshooting |
| Documentado | Aplicação Laravel, Symfony ou custom que precisa de directivas específicas (xdebug.*, opcache.*) |
| Documentado | Servidor partilhado onde cada site tem directivas diferentes (.user.ini por directoria) |
| Documentado | Performance tuning — ver se OPcache está activo e qual o consumo de memória |
3. Diagnóstico Prévio
Antes de criar um phpinfo, identificar 3 coisas:
|
1
|
Qual o sistema operativo do alojamento (Ubuntu, CentOS, Windows) — afecta o caminho do php.ini |
|
2
|
Como corre o PHP — como módulo Apache (mod_php), PHP-FPM (Nginx/Apache), FastCGI, ou CGI |
|
3
|
Qual a versão do PHP — múltiplas versões podem coexistir (cPanel MultiPHP, Plesk, Debian/Ubuntu com update-alternatives) |
cat /etc/os-release
uname -a
# Versão do PHP CLI
php -v
ℹ CLI diferente do PHP-FPM — situação comum em cPanel
Se a versão CLI for diferente da versão servida por Apache/Nginx (situação comum com cPanel MultiPHP), será necessário ver as duas — são configurações distintas com ficheiros php.ini diferentes.
4. Método 1 — phpinfo() em Página Web
Este é o método mais completo. Mostra todas as directivas carregadas, módulos, variáveis de ambiente e o caminho efectivo de cada php.ini. É o único que mostra exactamente o que o PHP-FPM ou mod_php está a usar no request HTTP — porque corre no mesmo SAPI que as páginas do site.
4.1 Criar o ficheiro
cat > /var/www/seudominio.pt/public_html/phpinfo.php <<‘EOF’
<?php
phpinfo();
EOF
chmod 644 /var/www/seudominio.pt/public_html/phpinfo.php
chown www-data:www-data /var/www/seudominio.pt/public_html/phpinfo.php
Ou criar directamente no File Manager do cPanel em public_html/phpinfo.php com este conteúdo:
phpinfo();
4.2 Aceder e interpretar
Abrir https://seudominio.pt/phpinfo.php no browser. Usar Ctrl+F para pesquisar directivas específicas (memory_limit, upload_max_filesize, etc.). O phpinfo() mostra 3 colunas por directiva:
| Coluna | Significado |
|---|---|
| Local Value | O que está em vigor no request actual — sobrescreve o Master se houver .htaccess ou .user.ini |
| Master Value | O valor definido no php.ini carregado |
| Access | Onde pode ser alterado (PHP_INI_SYSTEM, PHP_INI_ALL, etc.) |
ℹ Local Value diferente de Master Value
Se os dois valores diferem, existe um .htaccess ou .user.ini a sobrepor o php.ini global. O Local Value é o que está efectivamente em vigor.
4.3 Apagar IMEDIATAMENTE o ficheiro
⚠ phpinfo() em produção é uma falha de segurança
phpinfo() expõe caminhos completos do servidor, versões de extensões e variáveis de ambiente. Atacantes usam esta informação para encontrar vulnerabilidades. A maioria dos scanners (Sucuri, Wordfence) reporta phpinfo.php como risco crítico. Apagar o ficheiro em menos de 5 minutos após a consulta.
rm /var/www/seudominio.pt/public_html/phpinfo.php
# Confirmar que foi apagado
curl -sI https://seudominio.pt/phpinfo.php
# Esperado: HTTP/1.1 404 Not Found
5. Método 2 — php -i (Linha de Comandos)
Para quem tem acesso ao servidor via SSH. Mostra as directivas do PHP CLI — atenção que o CLI pode ter configurações diferentes do PHP-FPM/mod_php que serve o site.
php -i
# Procurar directivas específicas
php -i | grep -i “memory_limit\|upload_max_filesize\|post_max_size”
# Caminho do php.ini carregado — mais útil para diagnóstico
php –ini
# Módulos carregados
php -m
# Versão detalhada
php -v
Exemplo de saída do php --ini:
Loaded Configuration File: /etc/php/8.1/cli/php.ini
Scan for additional .ini files in: /etc/php/8.1/cli/conf.d
Additional .ini files parsed: /etc/php/8.1/cli/conf.d/10-opcache.ini,
/etc/php/8.1/cli/conf.d/20-curl.ini
⚠ CLI e PHP-FPM têm php.ini diferentes
O caminho /etc/php/8.1/cli/php.ini é para PHP CLI. Para PHP-FPM (servido por Nginx/Apache), o caminho é /etc/php/8.1/fpm/php.ini. São ficheiros distintos — alterações num não afectam o outro.
php-fpm8.1 -i 2>&1 | head -50
# CentOS/RHEL (PHP 7.4 legado)
php-fpm -i 2>&1 | head -50
# Ou ver a configuração carregada pelo FPM
php-fpm8.1 -tt 2>&1 | head -30
6. Método 3 — cPanel MultiPHP INI Editor (Sem Código)
Para quem usa cPanel, não precisa de SSH nem de criar ficheiros. O painel tem duas interfaces distintas para gerir PHP.
6.1 MultiPHP INI Editor — ver e alterar directivas
|
1
|
Login no cPanel → grupo Software → MultiPHP INI Editor |
|
2
|
Escolher entre dois modos:
|
⚠ Editor Mode afecta o php.ini global
Alterações em Editor Mode afectam o php.ini global do servidor e impactam todos os sites do alojamento. O Basic Mode é mais seguro porque escreve directivas individuais em .user.ini na pasta /home/utilizador/public_html/, sem tocar no global.
6.2 MultiPHP Manager — qual versão PHP corre
|
1
|
cPanel → MultiPHP Manager |
|
2
|
Seleccionar o domínio/subdomínio |
|
3
|
A versão activa está visível no dropdown (ex: ea-php81 para PHP 8.1) |
|
4
|
Para alterar: seleccionar a versão pretendida no dropdown e clicar em Apply |
ℹ Porquê gerir a versão por site?
Com cPanel EasyApache 4, podem coexistir PHP 7.4, 8.0, 8.1, 8.2, 8.3 no mesmo servidor. Cada site pode usar uma versão diferente — útil para migrar gradualmente sem quebrar compatibilidade de plugins.
7. Método 4 — phpinfo Filtrado por Secção
Para quem quer ver apenas uma parte do phpinfo em vez de toda a página, usar a constante de secção como argumento:
// Mostrar apenas directivas (omite License, Environment, etc.)
phpinfo(INFO_CONFIGURATION);
// Mostrar apenas módulos carregados
phpinfo(INFO_MODULES);
// Mostrar apenas variáveis de ambiente
phpinfo(INFO_ENVIRONMENT);
// Combinações (bitmask)
phpinfo(INFO_GENERAL | INFO_CONFIGURATION | INFO_MODULES);
Constantes válidas: INFO_GENERAL, INFO_CREDITS, INFO_CONFIGURATION, INFO_MODULES, INFO_ENVIRONMENT, INFO_VARIABLES, INFO_LICENSE, INFO_ALL (padrão).
Para obter valores programaticamente sem gerar HTML:
// Array com todas as directivas carregadas
$config = ini_get_all();
// Filtrar directivas por prefixo (ex: opcache)
foreach ($config as $key => $val) {
if (str_starts_with($key, ‘opcache.’)) {
echo “$key = {$val[‘global_value’]} (local: {$val[‘local_value’]})\n”;
}
}
8. Método 5 — .user.ini (PHP-FPM em Alojamento Partilhado)
Em alojamento partilhado (cPanel, Plesk, DirectAdmin), o utilizador não tem acesso ao php.ini global. PHP-FPM suporta um ficheiro .user.ini por directoria — análogo ao .htaccess do Apache para configurações PHP.
8.1 Localização
8.2 Conteúdo típico
memory_limit = 512M
; Permitir upload até 100 MB
upload_max_filesize = 100M
post_max_size = 100M
; Aumentar tempo de execução
max_execution_time = 300
max_input_time = 300
; Permitir mais variáveis (formulários complexos)
max_input_vars = 5000
8.3 Cache TTL e forçar refresh
O PHP-FPM recarrega .user.ini a cada 5 minutos por defeito (user_ini.cache_ttl). Para forçar refresh imediato após alteração:
sudo systemctl reload php8.1-fpm
# Ou reiniciar (perde pool por segundos)
sudo systemctl restart php8.1-fpm
8.4 Verificar .user.ini efectivo
cd /home/utilizador/public_html
php -i | grep -E “memory_limit|upload_max_filesize” | head
# Ou via phpinfo() no browser — a coluna Local Value reflecte .user.ini
9. Método 6 — Verificar Versão do PHP e Módulos
php -v
# Módulos carregados
php -m
# Módulos que WordPress, Joomla e PrestaShop precisam
php -m | grep -E “^(curl|gd|mbstring|mysqli|xml|zip|json|openssl|pdo)$”
# Verificar se um módulo específico está carregado
php -r “var_dump(extension_loaded(‘opcache’));”
# Versão de um módulo
php -r “echo phpversion(‘curl’);”
Para confirmar módulos no contexto web (não CLI) — criar um ficheiro temporário e apagar após consulta:
// Listar todos os módulos carregados no contexto web
$exts = get_loaded_extensions();
sort($exts);
echo implode(“\n”, $exts);
10. Verificação
curl -sL https://seudominio.pt/phpinfo.php | head -5
# Esperado: HTML com “PHP Version 8.1.x” e directivas visíveis
# 2 — Confirmar phpinfo apagado (segurança)
curl -sI https://seudominio.pt/phpinfo.php
# Esperado: HTTP/1.1 404 Not Found
# 3 — Confirmar directiva específica em vigor
curl -sL https://seudominio.pt/info.php | grep -A1 “memory_limit”
# Esperado: memory_limit => 256M => 256M (Local = Master = valor em vigor)
11. Erros Comuns (10 Situações)
| # | Problema | Causa e solução |
|---|---|---|
| 1 | phpinfo() mostra valores errados | Múltiplas versões PHP instaladas (CLI, mod_php, FPM). Verificar com which php e php-fpm8.1 -i separadamente. |
| 2 | Alteração em .user.ini não aplica | TTL de cache não expirou (5 min por defeito). Forçar com systemctl reload php8.1-fpm. |
| 3 | phpinfo() aparece em branco | output_buffering = Off ou expose_php = Off. Verificar via CLI diretamente. |
| 4 | Permissão negada a ler php.ini | PHP corre como www-data mas o php.ini é root:root 600. Mudar para 644. |
| 5 | Directiva não visível em Basic Mode do cPanel | Basic Mode só expõe directivas PHP_INI_PERDIR ou PHP_INI_USER. Directivas PHP_INI_SYSTEM (ex: expose_php) requerem acesso ao php.ini global. |
| 6 | WordPress reporta valor errado | Plugin sobrepõe via ini_set() no runtime. Criar um ficheiro independente com <?php phpinfo(); para ver o valor real. |
| 7 | PHP 8.2+ mais restritivo em .user.ini | Algumas directivas deixaram de poder ser alteradas em runtime. memory_limit continua possível; disable_functions não. |
| 8 | php -i diferente do phpinfo no browser | Comportamento esperado — são SAPIs diferentes. O browser usa mod_php ou PHP-FPM; o php -i é CLI. |
| 9 | cPanel mostra “Disabled” em MultiPHP Manager | cPanel limitou a versão do PHP na conta por medida de segurança. Contactar o fornecedor de alojamento. |
| 10 | Módulo carregado em CLI mas não em FPM | Extensão instalada em /etc/php/8.1/cli/conf.d/ mas não em /etc/php/8.1/fpm/conf.d/. O cPanel EasyApache 4 gere isto automaticamente via MultiPHP. |
12. Boas Práticas
| # | Prática | Detalhe |
|---|---|---|
| 1 | Nunca deixar phpinfo.php em produção | Criar, consultar e apagar em menos de 5 minutos |
| 2 | Bloquear acesso a phpinfo no servidor web | Nginx: location ~* phpinfo\.php$ { deny all; return 404; } |
| 3 | Usar .user.ini em vez de editar php.ini | Em alojamento partilhado, é a única forma segura de personalizar sem afectar outros sites |
| 4 | Documentar a configuração | Manter um php-config.md na raiz do repositório com os valores — ex: memory_limit=256M (PHP 8.1.29) |
| 5 | Monitorizar com WP-CLI | wp eval 'echo ini_get("memory_limit");' é mais rápido que aceder ao phpinfo |
| 6 | Validar em homologação antes de produção | Antes de alterar .user.ini em produção, testar em ambiente com a mesma versão PHP |
| 7 | Planear upgrade de PHP | PHP 8.1 EOL: 2025-12-31 · PHP 8.2 EOL: 2026-12-31 · PHP 8.3 EOL: 2027-12-31. Ver php.net/supported-versions |
