Поддержка CGI-сценариев

We use cookies. Read the Privacy and Cookie Policy

Поддержка CGI-сценариев

Если вы собираетесь использовать CGI-сценарии, то должны сообщить серверу Apache о своем намерении. При получении URL, содержащего имя сценария, сервер должен запустить этот сценарий, а также организовать обработку данных, переданных клиентом, формирование Web-страницы и передачу ее броузеру. При использовании CGI-сценария Apache выполняет роль посредника между клиентом и сценарием на стороне сервера. Настроить сервер для выполнения подобных функций не сложно. Вы должны лишь разрешить поддержку CGI-сценариев и сообщить Apache типы запросов, при получении которых следует запускать сценарии.

Для обеспечения работы с CGI необходимо загрузить соответствующий модуль Apache.

LoadModule cgi_module lib/apache/mod_cgi.so

Если компоненты, предназначенные для поддержки CGI-сценариев, включены в состав двоичных файлов Apache, вам надо активизировать их посредством директивы AddModule. (В некоторых случаях активизировать надо и компоненты, реализованные в виде модулей.)

AddModule mod_cgi.с

В результате сервер Apache получает возможность запускать CGI-сценарии и взаимодействовать с ними. Вам осталось лишь разрешить поддержку CGI для конкретных файлов и каталогов. Сделать это можно несколькими способами.

• ScriptAlias. Данная директива решает две задачи. Во-первых, она сообщает серверу Apache о том, что файлы, содержащиеся в указанном каталоге, должны интерпретироваться как CGI-сценарии. Во-вторых, посредством этой директивы задается соответствие между каталогом, расположенным на диске, и каталогом, который указывается в URL. Например, выражение ScriptAlias /scripts/ "/home/httpd/cgi-bin/" отображает физический каталог /home/httpd/cgi-bin/ в каталог /scripts в составе URL. В результате, если пользователь укажет URL http://www.threeroomco.com/scripts/test.pl, сервер запустит на выполнение сценарий test.pl, содержащийся в каталоге /home/httpd/cgi-bin/. Часто при инсталляции Apache опции LoadModule и AddModule по умолчанию включаются в конфигурационный файл; вероятнее всего, вы встретите их, просматривая содержимое файла httpd.conf. Для работы с CGI-сценариями часто бывает нужен модуль mod_alias. Соответствующая директива обычно по умолчанию включается в состав конфигурационного файла. При возникновении проблем, проверьте, загружен ли данный модуль.

• Options +ExecCGI. Разрешить выполнение CGI-сценариев можно, указав значение +ExecCGI директивы Options. Данная опция не должна указываться для всей системы, ее имеет смысл применять только к отдельным каталогам (т.е. она должна присутствовать только в составе директивы <Directory>).

• .htaccess. Контролировать доступ к отдельному каталогу можно, размещая в нем файл .htaccess. Если в файле .htaccess содержится запись Options +ExecCGI, Apache будет запускать CGI-сценарии, находящиеся в этом каталоге. Чтобы это произошло, в файле httpd.conf должна находиться запись AllowOverride Options; эта запись должна воздействовать как минимум на каталог, содержащий файл .htaccess.

Внимание

Наличие записей Options +ExecCGI и AllowOverride Options представляет угрозу для системы. При неправильном использовании этих средств пользователи получают возможность создавать сценарии, предоставляющие полный доступ к системе. По этой причине в большинстве дистрибутивных пакетов использование файла .htaccess запрещено.

Часто при настройке Apache в конфигурационный файл включается директива ScriptAlias, отображающая каталог /home/httpd/cgi-bin файловой системы в каталог /cgi-bin в составе URL. Такая настройка удобна для администратора. Чтобы установить CGI-сценарий и сделать его доступным для пользователя, достаточно разместить соответствующий файл в каталоге /home/httpd/cgi-bin. При этом необходимо обратить внимание на права доступа к файлу. Поскольку сценарий предназначен для выполнения, для файла, содержащего код этого сценария, должен быть установлен соответствующий признак. Если вы написали сценарий самостоятельно или скопировали его с Web- или FTP-узла, то после размещения его в каталоге /home/httpd/cgi-bin надо выполнить команду chmod a+x имя_сценария.