Как CGI распознает компилятор? - PullRequest
4 голосов
/ 07 февраля 2012

Этот вопрос может показаться очень глупым большинству просвещенных людей здесь.Но, поверьте мне, я спрашиваю об этом, потому что я не смог найти ответ при обычном поиске в Google и, таким образом, прибегнул к этому здесь.Я знаю, что CGI не зависит от языка.Поскольку я не занимаюсь веб-разработкой, мне было просто интересно, как веб-сервер узнает, какой компилятор искать, если у нас есть несколько сценариев cgi, среди которых один может быть сценарием python, а другой - C и так далее?

Ответы [ 2 ]

2 голосов
/ 07 февраля 2012

CGI-скрипты запускаются операционной системой.

Веб-серверы обычно предполагают, что файл является CGI-сценарием, если он находится в определенном каталоге (часто называемом cgi-bin) и в нем установлен исполняемый бит.

Если веб-сервер считает, что файл представляет собой сценарий CGI, он fork s устанавливает некоторые переменные среды и другие мелочи, а затем просит операционную систему выполнить его.

Операционная система видит, может ли она выполнить ее напрямую, и если может, то и выполняет. В противном случае он ищет hashbang и использует его для выполнения скрипта.

1 голос
/ 07 февраля 2012

В CGI нет ничего об этом. Каждый веб-сервер делает это по-своему. Например, Apache имеет полный язык конфигурации для указания того, как запросы обрабатываются, фильтруются и направляются обработчикам. Напротив, простой HTTP-сервер Python не имеет понятия сценариев CGI и просто вызывает методы объекта Python для обслуживания запросов.

EDIT:

CGI обычно означает RFC 3875 . В этом документе никогда не требуется, чтобы веб-серверы связывали файлы в локальной файловой системе с URL-адресами.

Бит, который ближе всего подходит к разговору о скриптах, это

3,4. Исполнение

Сценарий вызывается системным образом.

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

...