Por algum motivo, não consigo executar um script perl na pasta cgi-bin. Eu não fiz esses arquivos e nós os enviamos para outro servidor e eles funcionam bem.
No entanto eu usei o seguinte arquivo test.pl que funciona bem através do bash (como root) e através do navegador.
#!/usr/bin/perl
use strict;
use warnings;
#Useful for testing: Perl error messages, plus your die statements, will get
#sent to the browser. Otherwise you will just see "Internal Server Error".
use CGI::Carp qw/fatalsToBrowser/;
#Always use the CGI module for your scripts.
use CGI;
#Create simple HTML output (taken directly from CGI documentation).
my $q = CGI->new; # create new CGI object
print $q->header, # create the HTTP header
$q->start_html('hello world'), # start the HTML
$q->h1('hello world'), # level 1 header
$q->end_html; # end the HTML
Os outros scripts em execução usam exatamente as mesmas permissões e configurações. No entanto, os scripts apenas exibem uma mensagem de erro 500, a menos que eu altere a linha superior de #!/usr/bin/perl
para #!/usr/bin/perl -w
(com avisos). O log de erros produz o seguinte erro quando eu o executo sem o -w
.
Registro de erros:
[Fri Sep 26 12:06:03 2014] [error] [client xxx.xxx.xx.xxx] (2)No such file or directory: exec of '/var/www/html/foldername/cgi-bin/ss000001.pl' failed
[Fri Sep 26 12:06:03 2014] [error] [client xxx.xxx.xx.xxx] Premature end of script headers: ss000001.pl
Devo observar que posso fazer nano /var/www/html/foldername/cgi-bin/ss000001.pl
, que abre o arquivo e alterar perl para -w
, conforme explicado acima.
Alguém sabe onde posso começar ou ver algo imediatamente errado aqui?