Автор Тема: Не выполняются Perl скрипты [решено]  (Прочитано 7561 раз)

Оффлайн __romka_

  • Завсегдатай
  • *
  • Сообщений: 65
    • Email
Slinux (Linux 2.6.30-std-def-alt15 #1 i686 GNU/Linux)
Поставил Апач2 из репозитория. Локалхост отдает "It Works!" как и должен. В рабочий каталог я скопировал свои файлы .html и .php. Работают.

А вот Perl скрипты (.pl) из браузера не выполняются. Из командной строки (если просто запустить, даже не указывая на перл) выполняются нормально. Эта оговорка специально для тех кто кинется советовать переставить Апач/Перл/Систему заново или собрать из других пакетов. Акцентирую - Перл скрипты вне браузера (из строки) отрабатывают нормально.

Поиском нашел вот это:
http://forum.altlinux.org/index.php/topic,3329.0.html
http://forum.altlinux.org/index.php/topic,5635.0.html
http://forum.altlinux.org/index.php/topic,3363.0.html
не помогло.

Мои настройки:
httpd2.conf
ServerRoot "/etc/httpd2"
Include conf/mods-enabled/*.load
Include conf/mods-enabled/*.conf

Include conf/ports-enabled/*.conf

<IfModule !mpm_netware_module>
User user (пробовал и apache2 и root)
Group user (пробовал и apache2 и root)
</IfModule>

<FilesMatch "^\.ht">
<IfModule authz_host_module>
Order allow,deny
Deny from all
</IfModule>
Satisfy All
</FilesMatch>

ErrorLog "/var/log/httpd2/error_log"
LogLevel warn
DefaultType text/plain


Include conf/extra-enabled/*.conf

Include conf/sites-enabled/*.conf

# Chtobi rabotal perl
AddHandler cgi-script .cgi .pl
<Directory /var/www/html/bin/cgi-bin> (пробовал указывать папку в /home/www/cgi-bin и помещать туда перл скрипты)
Options ExecCGI Indexes
</Directory>


/sites-available/default.conf
<VirtualHost *>
ServerAdmin romka_site@mail.ru

DocumentRoot "/var/www/html"

<Directory />
Include conf/include/Directory_root_default.conf
</Directory>
<Directory "/var/www/html">
Include conf/include/Directory_html_default.conf
</Directory>

ErrorLog /var/log/httpd2/error_log
LogLevel warn

<IfModule log_config_module>
CustomLog /var/log/httpd2/access_log common
</IfModule>

<IfModule alias_module>
ScriptAlias /cgi-bin/ "/var/www/html/bin/cgi-bin/"
</IfModule>

<Directory "/var/www/html/bin/cgi-bin">
Include conf/include/Directory_cgibin_default.conf
</Directory>
</VirtualHost>

/include/Directory_cgibin_default.conf
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
<IfModule authz_host_module>
Options ExecCGI
</IfModule>
« Последнее редактирование: 13.01.2011 19:23:35 от Skull »

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 246
  • Учиться .... Телепатами не рождаются, ими ....
    • Email
Re: Не выполняются Perl скрипты
« Ответ #1 : 12.01.2011 11:55:38 »
Я не спец по web, но скорей всего или не установлен какой-нибудь пакет, или "не откручена какая-нибудь гайка" в конфигах.

Оффлайн __romka_

  • Завсегдатай
  • *
  • Сообщений: 65
    • Email
Re: Не выполняются Perl скрипты
« Ответ #2 : 12.01.2011 13:03:45 »
ну так вот я об этом и спрашиваю.
Апач то работает коректно. Перл установлен.
Что то в конфигах не подкручено. Вот только что именно?

Оффлайн asy

  • alt linux team
  • ***
  • Сообщений: 8 099
Re: Не выполняются Perl скрипты
« Ответ #3 : 12.01.2011 14:24:16 »
"a2enmod cgi" какой-нибудь ?

Оффлайн Salomatin

  • Модератор раздела
  • ****
  • Сообщений: 981
    • Пошаговые инструкции
    • Email
Re: Не выполняются Perl скрипты
« Ответ #4 : 12.01.2011 15:40:57 »
Из командной строки (если просто запустить, даже не указывая на перл) выполняются нормально.

Попробуйте так:

Подгрузите
apt-get install apache2-mod_perl
подключите в апаче
a2enmod cgi
В /etc/httpd2/conf/extra-available/Directory_html_default.conf
вместо
Options Indexes Includes FollowSymLinks MultiViews
вставить
Options Indexes Includes FollowSymLinks MultiViews +ExecCGI
AddHandler cgi-script .cgi .pl
DirectoryIndex Ваш_стартовый файл.pl.

и там же разрешите смотреть из вашей подсети
поправьте


AllowOverride None

<IfModule authz_host_module>
        #
        # Controls who can get stuff from this server.
        #

        AllowOverride None
        Order Allow,Deny
        Allow from localhost  Ваша_подсеть.0/24 127.0.0.1
</IfModule>


перегрузите апач
service httpd2 restart
Что-то более конкретное посоветовать трудно, так как вы используете Slinux, а не стандартный сервер. Возможно там установлены изначально не все нужные пакеты.
Хочешь понять сам, объясни другому.
"Если уже все испробовал и ничего не помогает - почитай инструкцию"

Оффлайн __romka_

  • Завсегдатай
  • *
  • Сообщений: 65
    • Email
Re: Не выполняются Perl скрипты
« Ответ #5 : 13.01.2011 17:44:40 »
все решилось как всегда просто.
в алисах скриптов был лишний слеш ((((

всем спасибо

Оффлайн FUKS

  • Начинающий
  • *
  • Сообщений: 1
Re: Не выполняются Perl скрипты
« Ответ #6 : 24.11.2017 09:38:11 »
Добавлю уточнение для истории.

Изначально:
ScriptAlias /cgi-bin/ /var/www/html/bin/cgi-bin/
<Directory "/var/www/html/bin/cgi-bin">

Надо:
ScriptAlias /cgi-bin/ /var/www/html/bin/cgi-bin/
<Directory "/var/www/html/bin/cgi-bin/">

Если же убрать последний слэш из ScriptAlias (оставить /var/www/html/bin/cgi-bin), то по запросу site/cgi-bin/script.pl ищется /var/www/html/bin/cgi-binscript.pl и не находится. Альтернативный вариант - убрать слэши и из пути, и из алиаса:
ScriptAlias /cgi-bin /var/www/html/bin/cgi-bin
<Directory "/var/www/html/bin/cgi-bin">
Тогда запросу site/cgi-bin/script.pl соответствует /var/www/html/bin/cgi-bin/script.pl - что и требуется.