index.pl загружается вместо выполнения в Ubuntu 12.04 и Apache 2.2.22

Я установил Apache 2.2.22 в Ubuntu 12.04. Но в браузере, когда я набираю localhost, он дает файл index.pl для загрузки вместо его выполнения. Что я пробовал:
1. chmod 755 index.pl
2. Добавление строки DirectoryIndex index.pl index.html в etc / apache2 / site-available / example.com, которая в итоге выглядит как показано ниже.

Я делал это раньше на Windows-машине. Но структура каталогов отличается в Windows и Ubuntu. Файл Httpd.conf пустой в Ubuntu. И при поиске по каталогам я не нашел. файлов, похожих на файл конфигурации. Поэтому я не совсем понимаю, где именно я должен вносить изменения в конфигурацию.

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
        ServerName example.com
    DocumentRoot /var/www/example.com/public_html
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/example.com/public_html>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>
# This line was added by me
DirectoryIndex index.html index.pl
    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>
1
задан 3 September 2013 в 07:15

1 ответ

Вы не объяснили, где находится ваш файл index.pl в иерархии файлов, но я предполагаю, что он есть в вашем DocumentRoot.

Проблема в том, что ваш каталог DocumentRoot традиционно используется для обслуживания статических документов. По соображениям безопасности файлы в иерархии DocumentRoot никогда не обрабатываются (т.е. выполняются), а файлы в каталоге ScriptAlias ​​никогда не обрабатываются статически.

Вам необходимо отделить исполняемый контент (perl, php, sh) от статически обслуживаемого контента (html-файлы, изображения, css, js) - чтобы веб-сервер знал, что файлы находятся в «this» каталоге и ниже don ». не нужно обрабатывать (например, изображения), а файлы в этом каталоге делают.

Для этого:

  1. Создайте файл index.html с мета-заголовками, которые перенаправляют в /cgi-bin/index.pl, и поместите index.html в DocumentRoot
  2. [ 111] Переместите ваш index.pl в каталог, на который указывает ScriptAlias ​​(с соответствующим разделом Directory - с флагом + ExecCGI). Убедитесь, что index.pl является исполняемым, и убедитесь, что его строка shebang указывает на разрешимый perl.

Вывод html вашего index.pl по-прежнему может ссылаться на изображения и т. Д. Из корня (например, помещать папку изображений в корневую папку вашего документа и ссылаться на изображения из html как /images/logo.png), и сценарии могут быть связаны с (через отправку формы или href) из вашего HTML-содержимого из папки сценария (например, как /cgi-bin/processform.pl)

0
ответ дан 3 September 2013 в 07:15

Другие вопросы по тегам:

Похожие вопросы: