Seguindo o que está descrito aqui --- https://httpd.apache.org/docs/2.4/howto/cgi.html --- Criei um pequeno documento Perl:
#!/usr/bin/perl
print "Content-Type: text/html; charset=utf-8\n\n";
print "Hello, World.";
e chamou first.pl
. Eu também modifiquei para que pareça
#!/usr/bin/perl
print "Content-Type: text/html; charset=utf-8\r\n\r\n";
print "Hello, World.";
porque um amigo apontou que o significado de "\n" depende do sistema e o que é necessário é CR-LF CR-LF, mas os resultados são os mesmos.)
Quando eu olho localhost/~mylogin/first.pl
no navegador Chrome, recebo a seguinte saída:
Content-Type: text/html; charset=utf-8
Hello, World.
(O ; charset=...
material é uma ligeira modificação do que os documentos do Apache sugerem, porque deixá-lo de fora também produziu uma linha de saída Content-Type, e algumas pesquisas sugeriram que o charset pode ser importante. Acontece que não fez diferença.)
As referências dos documentos do Apache dizem "onde quer que você coloque seu arquivo, você verá uma linha Hello, World.
aparecer na janela do navegador".
Claramente, estou vendo duas linhas, a primeira das quais deveria ter sido tratada apenas como descrição do conteúdo restante, e acho que isso é um problema.
Espero que seja algum erro realmente básico e gostaria de receber qualquer sugestão.
Contexto
Estou em um Mac rodando Monterey 12.6.6
Comecei a seguir as instruções daqui .
A partir do httpd.conf
arquivo vanilla, fiz apenas algumas edições, descomentando o seguinte:
LoadModule perl_module libexec/apache2/mod_perl.so
LoadModule userdir_module libexec/apache2/mod_userdir.so
Include /private/etc/apache2/extra/httpd-userdir.conf
E em /etc/apache2/extra/httpd-userdir.conf
, eu descomentei
Include /private/etc/apache2/users/*.conf
Eu criei /etc/apache2/users/mylogin.conf
e dei a ele este conteúdo:
<Directory "/Users/mylogin/Sites/">
AddLanguage en .en
AddHandler perl-script .pl
PerlHandler ModPerl::Registry
Options Indexes MultiViews FollowSymLinks ExecCGI
AllowOverride None
Require host localhost
</Directory>
eu corri
chmod +a "_www allow execute" ~
[em todos os casos acima, substituí "mylogin" pelo meu login real, é claro]
E então, seguindo as instruções do Apache, adicionei isso ao httpd.conf
arquivo:
<Directory "/Users/mylogin/Sites">
Options +ExecCGI
AddHandler cgi-script .cgi
</Directory>