(044) 362 48 16   (098) 294 41 60 
			   			  
             
             
            			 | 
         
        
            
            
                   
             | 
         
        | 
    
    
            
            
            
            Пример 1 Чтобы понять как работает CGI создадим два примитивных примера, которые запустим на Виндовзе. Для начала убедимся что Апач понимает CGI, для этого найдем примерно такие строчки, и если их нет, то создадим:
 ScriptAlias /cgi-bin/ "C:/apache/www/cgi-bin/" <Directory "C:/apache/www/cgi-bin"> AllowOverride None Options None Order allow,deny Allow from all </Directory>  Потом запустим Борланд Паскаль и напишем такую програмку:
 uses dos; var i:integer; begin writeln('Content-type: text/html'); writeln; writeln('This is an example of CGI program.'); writeln('Here is list of environment variables available for you'); writeln('<pre>'); For I:=1 To EnvCount Do WriteLn(EnvStr(I)); writeln('</pre>'); end.
   Скомпилируем её (Alt+F9 или Ctrl+F9) и поместим файл *.exe в папку C:/apache/www/cgi-bin/. Потом откроем броузер и введем адрес
 http://localhost/cgi-bin/example.exe?var1=value1&var1=value2  Появится список доступных переменных окружения. Теоретически даже на Паскале можно писать программы любой сложности, но для настоящего проекта его инструментарий явно захудалый.
 Пример 2 Создадим командный файл run.bat
 @echo off echo Location: /cgi-bin/example.exe  Когда вызвать
 http://localhost/cgi-bin/run.bat  то всё что он выведет - это редирект на программу из Примера 1.
 Итоги Итак, мы увидели, что CGI программа может запускаться веб-сервером (Апач, IIS) двумя способами:
 
 - Это исполняемый файл и он запускается как есть, весь результат возвращается назад броузеру. Перед запуском в переменные окружения помещаются некоторые значения.
  - Это интерпретируемый (пакетный) файл, запускается ассоциированная с ним программа и, в качестве параметров,- пакетный файл. Таким способом работают PHP и Perl, если установлены как CGI.
  
 
 Откуда веб-сервер знает как запускать программу Это сильно отличается на Виндах и *никсах.
 
 - На Виндах веб-сервер смотрит расширение файла (это обычно все последние символы до первой точки с конца). Если это *.exe или *.com то файл запускается как исполняемый. Если это *.bat (и *.cmd на WinNT) то запускается коммандный интерпретатор DOS command.com (cmd.exe на WinNT) с файлом в качестве параметра. Если веб-сервер IIS, то можно также запускать и *.dll программы. Если файл имеет другие расширения, то веб-сервер сначала смотрит в свою конфигурацию (httpd.conf etc) нету ли там зарегистрированных расширений. Если нету, то дальше он смотрит в реестр Виндоуз. Apache делает это только в случае если установлена директива
 <b>ScriptInterpreterSource</b> registry  Если вышеуказанный параметр не выставлен (по-умолчанию он стоит в
 <b>ScriptInterpreterSource</b> script  ), то он предпринимает попытку прочитать первую строку файла и найти там т. зв. вводную строку (shebang line):
 #!c:/program files/perl/perl  которая указывает чем нужно обрабатывать файл. Если ничего не найдено, выводится ошибка. 
  - На сервер *nix исполняемые файлы как правило начинаются с символов .ELF Такие файлы могут сразу обрабатываться ядром ОС. В противном случае расширение файла ищется в настройках сервера (httpd.conf, .htaccess). Если его там нет, ищется вводная строка как и на виндах. Если на виндах имеется только один встроенный интерпретатор (command.com), который не очень подходит для написания веб-приложений, то *nix'ы предлагают широкий выбор шеллов (семейство shells): Bourne-shells, C-shells, Korn-shells со всеми их последователями.
  
  На WinNT и *nix, кроме того, исполняемые файлы должны быть помечены как такие, т.е. текущий пользователь должен иметь права на исполнение (chmod 700 etc).              | 
             
             
               
     
   
  
     |