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