2016-12-01 4 views
0

У меня возникли трудности с правильной настройкой веб-приложения Perl на моем сервере Apache2. Я получаю 500 Internal Server Error при попытке доступа к сайту из веб-браузера.Apache Perl cgi-bin setup: Внутренняя ошибка сервера

Сообщение об ошибке в журнале ошибки:

[Wed Nov 30 23:55:46.848517 2016] [cgid:error] [pid 6899] (2)No such file or directory: AH01241: exec of '/var/cgi-bin/choose.pl' failed 

[Wed Nov 30 23:55:46.849213 2016] [cgid:error] [pid 2090] [client 127.0.0.1] End of script output before headers: choose.pl, referer: http://localhost/test/ 

Но когда я пытаюсь запустить скрипт из терминала (perl choose.pl) его пробегов, как и ожидалось, без ошибок. Файлы имеют 755 прав и начинаются с надлежащего shebang.

Сценарий загружается в файл html следующим образом: <frame src=/cgi-bin/choose.pl name=choose scrolling=auto> Когда я пытаюсь получить к нему доступ напрямую, он также терпит неудачу.

Мой /etc/apache2/sites-available/000-default.conf выглядит следующим образом:

<VirtualHost *:80> 
ServerAdmin [email protected] 
DocumentRoot /var/www/html 

ScriptAlias "/cgi-bin/" "/var/cgi-bin/" 
<Directory "/var/cgi-bin/"> 
    AllowOverride None 
    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch 
    Require all granted 
</Directory> 

ErrorLog ${APACHE_LOG_DIR}/error.log 
CustomLog ${APACHE_LOG_DIR}/access.log combined 

Спасибо за любую помощь! Это очень ценится!

+1

ОС сообщает, что '/ var/cgi-bin/choose.pl' не существует. Вы думаете иначе? – ikegami

+0

Имейте в виду, что услуги подчиняются вещам, таким как chroot jails и SElinux, поэтому то, что они видят как/var, может отличаться от того, что вы видите как/var. – ikegami

+0

@ikegami Да, файл существует. Если я запустил 'perl/var/cgi-bin/choose.pl', он будет выполняться так, как ожидалось. – JMac

ответ

0

Некоторые из обычных проблем (некоторые из них уже упоминались в комментариях)

1: Файл не существует.

2: AH01241 обычно появляется, когда отсутствует shebang. Попробуйте добавить это в качестве первой строки в файле PERL:

#!/usr/bin/perl 

Если у вас уже есть строка, начиная с #! то дайте нам знать и покажите нам эту линию.

3: Неверные разрешения. Если вышеперечисленное не работает попробуйте запустить это:

chmod 755 /var/cgi-bin/choose.pl 

Если вы пришли к этому и ничего не работает пробег:

ls -la /var/cgi-bin/choose.pl 

А потом показывают нам выход.

Смежные вопросы