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.
| Diretiva | Finalidade | Recomendação |
|---|---|---|
allow_url_fopen | Acesso 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_include | Inclusão/execução de código obtido por URL. | Mantenha Off. Atualize o sistema que exigir essa diretiva. |
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
- Abra Software > MultiPHP INI Editor.
- Selecione o domínio correto e confirme a versão PHP.
- Ative
allow_url_fopensomente se o requisito estiver documentado. - Mantenha
allow_url_includedesativado. - 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.