
A resposta curta: os scripts Perl e CGI (muitos formulários e contadores antigos) funcionam na hospedagem, mas são exigentes: o arquivo tem que ter permissão de execução (755), a primeira linha tem que apontar para o Perl certo, as linhas têm que acabar como no Linux (LF), e o script tem que começar por escrever um cabeçalho. Falhar qualquer uma dá o mesmo erro: 500.
Um script mínimo que deve funcionar
Crie um arquivo chamado teste.cgi com este conteúdo:
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "<h1>Funciona</h1>";
Envie-o para a pasta cgi-bin do site (ou para a pasta onde os CGI estão ativos), dê-lhe a permissão 755 e abra o-seu-dominio.com/cgi-bin/teste.cgi. Se aparece «Funciona», o resto é o seu script.
As causas do erro 500, por ordem
| Causa | Como a reconhece | O que fazer |
| Falta o cabeçalho | O registro diz «Premature end of script headers». | A primeira coisa que o script escreve tem que ser Content-type: text/html seguido de uma linha vazia. |
| Permissão errada | O arquivo não tem a permissão de execução, ou está demais aberto (777). | Ponha 755 no script e na pasta: Permissões de arquivos. |
| Caminho do Perl errado | A primeira linha (#!/usr/bin/perl) não existe neste servidor. | Confirme o caminho do Perl no seu servidor (num terminal, which perl) ou pergunte-nos. |
| Fins de linha do Windows (CRLF) | O script foi escrito no Windows e enviado como binário: a primeira linha fica «/usr/bin/perl^M» e não existe. | Grave o arquivo com fins de linha Unix (LF) no editor, ou envie-o em modo de texto pelo FTP. |
| Erro no próprio código | O registro mostra uma linha do script. | Corra-o no terminal: perl -c teste.cgi verifica a sintaxe. |
| Módulo Perl em falta | «Can’t locate ... in @INC». | Veja os módulos no cPanel, ou peça-nos que o instalemos. |
| Scripts antigos são um risco. Muitos nunca foram atualizados e têm falhas conhecidas (formulários que deixam enviar e-mail a qualquer pessoa, por exemplo). Antes de os usar, veja se há uma alternativa atual: Um formulário seguro e sem spam. Para ler o registro, veja Ler as páginas de Erros. |
| Para tudo o que corre aqui, incluindo o Perl, veja Que tecnologias correm aqui. E para o erro 500 em geral: Erro 500. |
|
O script continua dando 500? Abra um pedido com o endereço, o caminho do arquivo e a linha do registro. Abrir pedido de suporte |
Onde ver na sua conta
Não informamos aqui o caminho do Perl, porque a própria conta mostra isso. Use estas verificações:
- Caminho do Perl. Se «Terminal» (ou «Acesso SSH») aparecer no seu cPanel, a conta tem SSH: digite which perl e use a resposta na primeira linha do script. Se nenhum aparecer, coloque o caminho habitual no test.cgi e, se falhar, abra um ticket.
- A pasta cgi-bin está ativa? Não presuma. Envie o test.cgi deste artigo para a pasta cgi-bin com a permissão 755: se ele escrever a mensagem, o CGI funciona ali.
- Módulos Perl. Se o seu cPanel mostrar o ícone «Módulos Perl» na seção «Software», ele lista os módulos instalados; se o ícone não existir, peça o módulo de que você precisa.
- O erro de verdade. A página «Erros» do cPanel mostra a linha do log, como Premature end of script headers.
PRODUTO RECOMENDADO Hospedagem de sites com cPanel Domínio e SSL incluídos, cópias diárias e o painel que já conhece. desde R$ 36,30/mês (plano de 3 anos, com cupom) Ver planos |











