Scripts CGI podem retornar erro 500, “Premature end of script headers” ou não executar por permissão, interpretador, quebra de linha, cabeçalho HTTP ou recurso indisponível. CGI é tecnologia legada em muitos projetos; confirme se o plano e o servidor ainda habilitam o recurso antes de migrar um script antigo.
Checklist do arquivo
- envie em modo texto adequado e use final de linha Unix (LF);
- confirme o shebang na primeira linha, como
#!/usr/bin/perl; - use permissão executável necessária, normalmente
755, nunca 777; - confirme proprietário da conta;
- salve sem BOM antes do shebang;
- retorne cabeçalho válido antes do corpo.
Exemplo mínimo em Perl
#!/usr/bin/perl
use strict;
use warnings;
print "Content-Type: text/plain\r\n\r\n";
print "CGI ativo\n";
Teste apenas em diretório permitido, como cgi-bin, conforme o ambiente. Remova o arquivo depois.
Diagnóstico
- Abra cPanel > Metrics > Errors.
- Consulte o
error_logno horário exato. - Execute o script por SSH com o mesmo usuário quando houver acesso.
- Verifique módulos/bibliotecas e caminhos absolutos.
- Teste um CGI mínimo para separar servidor de aplicação.
Mensagens frequentes
- Permission denied: execute bit, diretório ou propriedade;
- bad interpreter: shebang incorreto, CRLF ou interpretador ausente;
- Premature end of headers: erro antes do cabeçalho ou saída inválida;
- Can't locate module: dependência ausente no ambiente do usuário;
- 500 após upload: modo de transferência ou permissão.
Quando modernizar o script
Se a aplicação depende de Perl antigo, módulos fora de suporte ou permissões amplas, planeje migração para um runtime mantido e um framework com gerenciamento de dependências. Preserve a interface e os dados, crie testes e migre em homologação; apenas trocar o shebang não corrige vulnerabilidades do código.
Para permissões, consulte CHMOD seguro; para erro genérico, veja Erro 500.
Recursos relacionados
Continue com materiais e serviços relacionados ao tema deste guia.