::: PHP.com.ua - учимся вместе. ::: ::: PHP.com.ua - учимся вместе. :::



 
   - Вакансия PHP-программист, Днепропетровск...
  - Проблема с передачей переменной в PHP ск...
  - Как хранить конфигурацию cms'ки?
  - Проблема с сортировкой массива
  - коллизии md5
  - Странный глюк функции date
  - Скроллинг в iframe


Главная
Новости
Статьи
Шпаргалки
Файлы
О проекте
Форум
Футболки


FREEhost.com.ua - купил хостинг 10 у.е. на Begun в подарок.

iName.com.ua - регистрация доменных имен и хороший хостинг.

Библиотека программиста - нужный вам исходник или документация по необходимому для вас языку программирования.

Designclub - Клуб дизайнеров Украины.

Регистрация доменов
Хостинг

 HowtoForge.ORG.UA - Это первый Украинский ресурс развития open source программного обеспечения


Путь: Статьи > Новичкам

Новичкам

Автор: - Yurik
Дата публикации - 21.5.2005
Просмотров: - 3613

Основы: CGI в примерах


[p]Пример 1[/p]
Чтобы понять как работает CGI создадим два примитивных примера, которые запустим на Виндовзе. Для начала убедимся что Апач понимает CGI, для этого найдем примерно такие строчки, и если их нет, то создадим:
[code] 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>[/code]
Потом запустим Борланд Паскаль и напишем такую програмку:
[code]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.
[/code]
Скомпилируем её (Alt+F9 или Ctrl+F9) и поместим файл *.exe в папку C:/apache/www/cgi-bin/. Потом откроем броузер и введем адрес
[quote]http://localhost/cgi-bin/example.exe?var1=value1&var1=value2[/quote]
Появится список доступных переменных окружения. Теоретически даже на Паскале можно писать программы любой сложности, но для настоящего проекта его инструментарий явно захудалый.
[p]Пример 2[/p]
Создадим командный файл run.bat
[code]@echo off
echo Location: /cgi-bin/example.exe[/code]
Когда вызвать
[quote]http://localhost/cgi-bin/run.bat[/quote]
то всё что он выведет - это редирект на программу из Примера 1.
[p]Итоги[/p]
Итак, мы увидели, что CGI программа может запускаться веб-сервером (Апач, IIS) двумя способами:

  • Это исполняемый файл и он запускается как есть, весь результат возвращается назад броузеру. Перед запуском в переменные окружения помещаются некоторые значения.
  • Это интерпретируемый (пакетный) файл, запускается ассоциированная с ним программа и, в качестве параметров,- пакетный файл. Таким способом работают PHP и Perl, если установлены как CGI.

[p]Откуда веб-сервер знает как запускать программу[/p]
Это сильно отличается на Виндах и *никсах.

  • На Виндах веб-сервер смотрит расширение файла (это обычно все последние символы до первой точки с конца). Если это *.exe или *.com то файл запускается как исполняемый. Если это *.bat (и *.cmd на WinNT) то запускается коммандный интерпретатор DOS command.com (cmd.exe на WinNT) с файлом в качестве параметра. Если веб-сервер IIS, то можно также запускать и *.dll программы. Если файл имеет другие расширения, то веб-сервер сначала смотрит в свою конфигурацию (httpd.conf etc) нету ли там зарегистрированных расширений. Если нету, то дальше он смотрит в реестр Виндоуз. Apache делает это только в случае если установлена директива
    [quote]<b>ScriptInterpreterSource</b> registry[/quote]
    Если вышеуказанный параметр не выставлен (по-умолчанию он стоит в
    [quote]<b>ScriptInterpreterSource</b> script[/quote]
    ), то он предпринимает попытку прочитать первую строку файла и найти там т. зв. вводную строку (shebang line):
    [quote]#!c:/program files/perl/perl[/quote]
    которая указывает чем нужно обрабатывать файл.
    Если ничего не найдено, выводится ошибка.
  • На сервер *nix исполняемые файлы как правило начинаются с символов .ELF Такие файлы могут сразу обрабатываться ядром ОС. В противном случае расширение файла ищется в настройках сервера (httpd.conf, .htaccess). Если его там нет, ищется вводная строка как и на виндах. Если на виндах имеется только один встроенный интерпретатор (command.com), который не очень подходит для написания веб-приложений, то *nix'ы предлагают широкий выбор шеллов (семейство shells): Bourne-shells, C-shells, Korn-shells со всеми их последователями.

На WinNT и *nix, кроме того, исполняемые файлы должны быть помечены как такие, т.е. текущий пользователь должен иметь права на исполнение (chmod 700 etc).



Обсудить в ФОРУМе - комментариев ()


Путь: Статьи > Новичкам

Если вы заметили орфографическую, стилистическую или другую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter.
Контакты Design by webFaction Ukrainian PHP Group 2004-2005