Não é possível incluir alguns scripts CGI no SSI

2

Eu tenho uma página site.shtml em um servidor Apache no qual estou tentando incluir alguns scripts CGI, assim:

    <p><pre><!--#include virtual="files/testfile" --></pre></p>
    <p><pre><!--#include virtual="cgi-bin/randhtml.cgi"--></pre></p>
    <p><pre><!--#include virtual="cgi-bin/echo.cgi" --></pre></p>
    <p><pre><!--#include virtual="echo.cgi" --></pre></p>
    <p><pre><!--#include virtual="cgi-bin/echo.cgi?test" --></pre></p>

Nesse caso, files/testfile é um arquivo de texto, cgi-bin/randhtml.cgi é um executável CGI pré-instalado e ambas as instâncias de echo.cgi são o script:

#!/bin/sh
echo $0;
echo $*;

Todos os scripts têm permissões definidas para 755 e podem ser executados a partir do shell, onde eles se comportam como esperado (saída aleatória ou ecoando argumentos anteriores).

Quando tento carregar a página da web, o arquivo e o script aleatório são executados corretamente e recebo a saída esperada. Os scripts de eco não são e recebo vários erros na página:

This is a test text file.
random
An error occurred while loading this page.
An error occurred while loading this page.
An error occurred while loading this page.

O log de erros contém apenas:

unable to include "cgi-bin/echo.cgi" in parsed file /home1/user/public_html/site.shtml
unable to include "echo.cgi" in parsed file /home1/user/public_html/site.shtml
unable to include "cgi-bin/echo.cgi?test" in parsed file /home1/user/public_html/site.shtml

Eu testei com vários outros scripts, tanto shell quanto perl, chamados .cgi e .pl (o Apache está configurado para manipular ambos como scripts CGI), e todos parecem dar esse erro. Eu verifiquei novamente as permissões e tentei com 777, sem sucesso. Eu escrevi os caminhos virtuais como cgi-bin/ e /cgi-bin/ , nem funciona.

Existe alguma limitação em que estou correndo, um erro de sintaxe ou algum problema estranho no servidor?

    
por ssube 06.12.2011 / 23:23

1 resposta

1

Você pode precisar adicionar um cabeçalho de tipo de conteúdo à sua saída CGI.

Tem certeza de que nada mais aparece por perto nos seus registros de erros do Apache? (Você está ganhando ou olhando para eles sem filtros?) Quando tentei recriar seu problema, vejo linhas como esta:

[Sun Dec 11 07:27:47 2011] [error] [client 192.0.2.1] unable to include "cgi-bin/echo.cgi"     in parsed file /var/data/www/www.example.org/ssi-test.shtml

... mas eles são acompanhados por:

[Sun Dec 11 07:31:39 2011] [error] [client 192.0.2.1] malformed header from script. Bad header=/var/data/www/www.example.org: echo.cgi

Eu suspeito que, se você adicionar:

echo "Content-type: text/html"
echo ""

... até o topo do seu script, antes que qualquer outro resultado apareça, seu problema irá embora ... ou pelo menos essa parte dele será. : -)

    
por 11.12.2011 / 17:47