Назад | Перейти на главную страницу

Perl не работает без предупреждений в CGI

По какой-то причине я не могу запустить Perl-скрипт в папке cgi-bin. Я не создавал эти файлы, мы загрузили их на другой сервер, и они работают нормально.

Однако я использовал следующий файл test.pl, который отлично работает через bash (как root) и через браузер.

#!/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

Другие запущенные скрипты используют точно такие же разрешения и настройки. Однако скрипты просто выдают сообщение об ошибке 500, если я не изменю верхнюю строку с #!/usr/bin/perl к #!/usr/bin/perl -w (с предупреждениями). Журнал ошибок выводит следующую ошибку, когда я запускаю его без -w.

Журнал ошибок:

[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

Должен отметить, что я могу nano /var/www/html/foldername/cgi-bin/ss000001.pl который открывает файл и меняет perl на -w делает, как объяснено выше.

Кто-нибудь знает, с чего я могу начать или тут сразу что-то не так вижу?