Запустить скрипт Perl на Apache2/Redhat5.5

Запустить скрипт Perl на Apache2/Redhat5.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

решение1

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

setsebool -P httpd_enable_cgi on

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

dos2unix file_upload.pl

решение2

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

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

Связанный контент