(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 & lt; / 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). |
|