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

Запустите Perl Script на Apache2 / Redhat 5.5

Я работаю с конфигурацией Apache2 / Redhat5.5. Я пытаюсь настроить (и узнать), как запускать скрипты Perl, которые для меня новы.

В моем файле httpd.conf я внес эти изменения и / или заметил следующие настройки:

DirectoryIndex index.html index.html.var index.cgi index.pl
...
AddHandler cgi-script .cgi .pl
...
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
...
<Directory "/var/www/cgi-bin">
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
</Directory>

Я разместил этот скрипт: http://www.seaglass.com/downloads/file_upload.pl в каталог / var / www / cgi-bin /.

Затем я указываю в своем браузере myIpAddress / cgi-bin / file_upload.pl и получаю «внутренняя ошибка сервера ... Сервер обнаружил внутреннюю ошибку или неправильную конфигурацию и не смог ...»

Затем я проверяю журнал ошибок, чтобы найти это:

[Sun Nov 27 19:59:02 2011] [error] [client ***] (2)No such file or directory: exec of '/var/www/cgi-bin/file_upload.pl' failed
[Sun Nov 27 19:59:02 2011] [error] [client ***] Premature end of script headers: file_upload.pl
[Sun Nov 27 19:59:02 2011] [error] [client ***] File does not exist: /var/www/html/favicon.ico

Предполагая, что у вас включен SELinux, включите CGI с помощью:

setsebool -P httpd_enable_cgi on

Это предполагает, что скрипт загружен правильно. Сценарии Perl работают не очень хорошо, если они либо сохранены в формате DOS, либо загружены в двоичном режиме через ftp. Если вы скопировали файл не через ftp (а вместо этого scp или sftp), преобразуйте файл с помощью:

dos2unix file_upload.pl

Для меня это звучит так, будто у тебя могло и не быть perl установлен на вашем компьютере, или что он может находиться по пути, отличному от /usr/bin/perl. Попробуйте набрать /usr/bin/perl -v в командной строке, чтобы подтвердить, что perl действительно установлен.

Также возможно, что вам не хватает разрешений на выполнение для /var/www/cgi-bin/file_upload.pl.