Общие сведения о CGI
CGI - Common Gateway Interface является стандартом интерфейса (связи) внешней прикладной программы с информационным сервером типа HTTP, Web сервер.
Обычно гипертекстовые документы, извлекаемые из WWW серверов, содержат статические данные. С помощью CGI можно создавать CGI-программы, называемые шлюзами, которые во взаимодействии с такими прикладными системами, как система управления базой данных, электронная таблица, деловая графика и др., смогут выдать на экран пользователя динамическую информацию.
Программа-шлюз запускается WWW сервером в реальном масштабе времени. WWW сервер обеспечивает передачу запроса пользователя шлюзу, а она в свою очередь, используя средства прикладной системы, возвращает результат обработки запроса на экран пользователя. Программа-шлюз может быть закодирована на языках C/C++, Perl. Как выполнимый модуль, она записывается в поддиректорий с именем cgi WWW сервера. Более подробное описание Вы сможете найти на www.webclub.ru, www.CitForum.ru.
Наиболее простым и доступным является использование языка Perl (Practical Extraction and Report Language _ практический язык извлечений и отчетов). Более подробное описание Вы сможете найти на www.webclub.ru, www.CitForum.ru.
Размещение CGI скриптов на Вашем сервере
Все CGI скрипты должны находиться в каталоге cgi в Вашем домашнем каталоге. Это обязательное условие. Если поместить CGI скрипт в другое место - выполняться он не будет. Допустим, Ваш домен - domain.hut.ru, тогда абсолютный путь к каталогу cgi будет выглядеть так: /home/d/domain.hut.ru/cgi. URL для скрипта script.cgi, лежащего в каталоге cgi будет выглядеть так: http://domain.hut.ru/cgi-bin/script.cgi
Права доступа
Для того чтобы Ваш скрипт мог выполняться Вам необходимо правильно выставить его права (permissions). Эти права должны быть равны 700 (-rwx------). ВНИМАНИЕ! Для директории "cgi" права доступа должны быть выставлены как 711. Обратите внимание, что при установке других прав скрипт выполняться не будет! Выставить права можно из shell'a или с помощью FTP-клиента. Например, для CuteFTP достаточно щелкнуть правой кнопкой мыши на файле, выбрать пункт "Change File Attributes", и в открывшемся окошке выставить флажками значение "700" (или просто набрать в поле ввода "700")
Также обратите внимание на самую первую строчку скрипта, написанного на Perl. Она указывает на расположение интерпретатора Perl в системе. При неверном указании скрипт, конечно же, работать не будет. Строчка должна иметь следующий вид:
#!/usr/bin/perl или #!/usr/local/bin/perl
Если скрипт работает с какими-либо файлами, в которые он записывает информацию (счетчики, форумы, гостевые книги) проверьте правильность указания пути к этим файлам. Может возникнуть ситуация , что эти файлы обычно должны иметь права доступа "777" (-rwxrwxrwx), также как и каталоги в которых они лежат. Это означает, что сам скрипт и файл содержащий данные необходимые для работы этого скрипта должны находиться в разных каталогах. Если поместить исполняемый скрипт в каталог с правами доступа "777" или "775", то он не будет выполняться. Также он не будет выполняться, если он сам имеет права доступа "777" или "775". Вообще, данные для работы скриптов нет необходимости хранить в каталоге cgi, их лучше размещать в каталоге WWW, отслеживая при этом правильность указания путей к ним.
Пожалуйста, обратите внимание, что установка прав доступа "777" на файл или каталог означает то, что любой пользователь получает полные права (чтение/запись/исполнение) на этот файл. Это является небезопасным, поэтому подобные права доступа на файлы необходимо выставлять только если это действительно необходимо.
На нашем сервере не будут выполняться скрипты права доступа которых (а также каталогов в которых они находятся) разрешают запись кому-либо, кроме владельца. Мы рекомендуем Вам устанавливать права доступа на исполняемые скрипты равными "700" или -rwx------.
Исходящие коннекты скриптов
Работа исходящих коннектов от Ваших скриптов с сервера запрещена. Проще говоря, они просто не будут работать. Например, если ваш скрипт пытается работать с процедурой "whois" или запрашивать информацию по какому-либо протоколу с другого сервера, то у него ничего не выйдет. Примите эту информацию к сведению.
Ошибка CR/LF
Во время написания или редактировавния скрипта Вы должны пользоваться специальным текстовым редактором. Это обусловлено тем, что в ОС Windows и UNIX по-разному описывается переход на следущую строку. Большинство текстовых редакторов под Windows вставляют в конец строки символ #13 (возврат каретки). Незаметный для пользователей Windows он приводит к ошибке в UNIX. Для того, чтобы избежать подобных проблем, следует пользоваться специальным редактором, умеющим сохранять файлы в формате UNIX без символа возврата каретки. Либо возможен вариант, когда Вы редактируете и сохраняете файлы скриптов в обычно