Я работаю с конфигурацией 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
.