Введение в CGI

Скрипты и Server Side Includes


Стандартный модуль подстановок (includes) сервера Apache позволяет задействовать CGI-скрипты для генерации подстановок. Скрипт, в отличие от обычной программы, наследует переменные окружения , которые генерирует сервер для CGI-скриптов, а не стандартный набор переменных окружения оболочки (shell).

<!--#exec cgi="/cgi-bin/include.cgi" -->

В данном случае мы вставили в документ результат работы скрипта include.cgi.

Вставку можно использовать и не для генерации части текста документа, а для анализа данных, передаваемых в страницу или для анализа переменных окружения CGI-скрипта, т.е. условий обращения к странице. Например, для анализа IP-адреса пользователя и условного перенаправления запроса.

Для того, чтобы сервер выполнил подстановки в файл srm.conf, нужно внести строку определения типа документов, подлежащих разбору (server parsed documents):

AddType text/x-server-parsed-html .shtml

Расширение файла *.shtml обычно используется для документов, требующих анализа их содержания на предмет выполнения подстановок. Если администратор желает распространить предварительный анализ содержания документов на все документы, то вместо или в дополнение к .shtml можно указать и .html.

Кроме того, для каталога (файл access.conf — общий файл конфигурации доступа или .htaccess — файл конфигурации доступа, расположенный в данном каталоге и переопределяющий правила доступа), в котором расположены документы в директиве Options, должны быть разрешены и подстановки, и исполнение CGI-скриптов:

<Directory /usr/local/etc/httpd/htdocs> AllowOverride Options Includes ExecCGI </Directory>

В данном случае для домашнего каталога документов сервера Apache, который используется в настройках по умолчанию, разрешено переопределять опции доступа в подкаталогах (AllowOverride) и исполнять подстановки и скрипты (Options Includes ExecCGI). По умолчанию обычно используют вместо последних двух опций одну — All. Она тоже разрешает подстановки и выполнение скриптов, а также ряд других действий:

<Directory /usr/local/etc/httpd/htdocs> AllowOverride Options All </Directory>

Вообще говоря, существует возможность разрешить подстановки, но запретить выполнение скриптов:

<Directory /usr/local/etc/httpd/htdocs> AllowOverride Options IncludesNoExec </Directory>



В этом случае отключаются не только скрипты, но и обычные команды, выполняемые из стандартной оболочки (shell). При этом можно разрешить исполнение скриптов самих по себе, но не в качестве вставок.

<Directory /usr/local/etc/httpd/htdocs> AllowOverride Options IncludesNoExec ExecCGI </Directory>

В данной конфигурации исполнение скриптов разрешено, а выполнение подстановки по команде exec запрещено.


<Directory /usr/local/etc/httpd/htdocs> AllowOverride Options All </Directory>
Вообще говоря, существует возможность разрешить подстановки, но запретить выполнение скриптов:
<Directory /usr/local/etc/httpd/htdocs> AllowOverride Options IncludesNoExec </Directory>
В этом случае отключаются не только скрипты, но и обычные команды, выполняемые из стандартной оболочки (shell). При этом можно разрешить исполнение скриптов самих по себе, но не в качестве вставок.
<Directory /usr/local/etc/httpd/htdocs> AllowOverride Options IncludesNoExec ExecCGI </Directory>
В данной конфигурации исполнение скриптов разрешено, а выполнение подстановки по команде exec запрещено.

© 2003-2007 INTUIT.ru. Все права защищены.
Содержание раздела