Central de Ajuda

Guia da Central de Ajuda

allow_url_fopen e allow_url_include no PHP: diferenças e configuração segura

allow_url_fopen permite que funções compatíveis tratem URLs como arquivos. allow_url_include permite usar URLs remotas em include e require, prática perigosa e quase nunca necessária. As duas diretivas não devem ser confundidas.

DiretivaFinalidadeRecomendação
allow_url_fopenAcesso a recursos remotos por wrappers em funções como fopen().Ative apenas quando a aplicação realmente precisar; prefira uma biblioteca HTTP com timeout e validação.
allow_url_includeInclusão/execução de código obtido por URL.Mantenha Off. Atualize o sistema que exigir essa diretiva.
Não habilite allow_url_include para contornar um erro antigo. Código remoto pode mudar sem controle e ampliar gravemente o impacto de uma vulnerabilidade. Aplicações modernas devem carregar dependências locais e verificadas.

Descobrir a configuração atual

No cPanel, abra MultiPHP INI Editor e selecione o domínio. Por SSH, confira a versão e o arquivo carregado:

php -v
php --ini
php -i | grep -E 'allow_url_(fopen|include)'

A saída do PHP CLI pode ser diferente da usada pelo site. Para confirmar no navegador, crie temporariamente um arquivo com phpinfo(), proteja o acesso e remova o arquivo imediatamente após a verificação, pois ele revela dados do ambiente.

Configurar no cPanel

  1. Abra Software > MultiPHP INI Editor.
  2. Selecione o domínio correto e confirme a versão PHP.
  3. Ative allow_url_fopen somente se o requisito estiver documentado.
  4. Mantenha allow_url_include desativado.
  5. Salve, teste a função específica e consulte o log de erros.

Dependendo do plano e do modo PHP, algumas diretivas podem estar bloqueadas globalmente. Nesse caso, abra um chamado informando domínio, versão PHP, diretiva e motivo técnico.

Alternativa segura para chamadas HTTP

Para APIs, use cURL ou um cliente HTTP mantido. Defina HTTPS, timeout de conexão e resposta, tamanho máximo, lista de destinos permitidos e validação de certificado. Não aceite uma URL arbitrária enviada pelo visitante: isso pode causar SSRF e permitir acesso a serviços internos.

$ch = curl_init('https://api.exemplo.com/recurso');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CONNECTTIMEOUT => 5,
    CURLOPT_TIMEOUT => 15,
    CURLOPT_FOLLOWLOCATION => false,
]);
$resposta = curl_exec($ch);

Se a aplicação antiga exige allow_url_include

  • confirme o requisito na documentação do fornecedor;
  • atualize ou substitua a aplicação;
  • não faça alteração global para todas as contas;
  • isole o sistema e restrinja saída de rede enquanto planeja a migração;
  • revise arquivos por sinais de comprometimento: malware frequentemente tenta ativar essa diretiva.

Referência: configuração do filesystem no manual do PHP.

Recursos relacionados

Continue com materiais e serviços relacionados ao tema deste guia.

Este guia resolveu sua dúvida? Seu retorno ajuda a priorizar as próximas revisões.
Atendimento técnico

Não encontrou o resultado esperado?

Abra um chamado e envie a mensagem de erro completa, o domínio ou serviço afetado, o horário do teste e capturas de tela sem senhas.