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.

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)
# Identificar SO e versão do kernel
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

# Via SSH (Ubuntu/Linux)
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:

<?php
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.

# Via SSH
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.

# Todas as directivas (equivale ao phpinfo() em texto)
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:

Configuration File (php.ini) Path: /etc/php/8.1/cli
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.

# Ver directivas do PHP-FPM especificamente (Debian/Ubuntu)
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 SoftwareMultiPHP INI Editor
2
Escolher entre dois modos:

  • Basic Mode (recomendado): mostra as directivas mais comuns (memory_limit, upload_max_filesize, post_max_size, etc.). Escreve em .user.ini — sem reinício necessário.
  • Editor Mode (avançado): mostra TODAS as directivas. Afecta o php.ini global — requer reinício do Apache/PHP-FPM.

⚠ 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:

<?php
// 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:

<?php
// 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

/home/utilizador/public_html/.user.ini

8.2 Conteúdo típico

; Aumentar memória para WordPress + WooCommerce
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:

# Recarregar graciosamente (sem downtime — recomendado)
sudo systemctl reload php8.1-fpm

# Ou reiniciar (perde pool por segundos)
sudo systemctl restart php8.1-fpm

8.4 Verificar .user.ini efectivo

# Ver o que está em vigor (CLI lê o .user.ini da directoria actual)
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

# Versão completa
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:

<?php
// Listar todos os módulos carregados no contexto web
$exts = get_loaded_extensions();
sort($exts);
echo implode(“\n”, $exts);

10. Verificação

# 1 — Confirmar phpinfo visível
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

Este artigo foi útil?

Duarte Spínola

Deixe um Comentário