cgi-bin

from The Free On-line Dictionary of Computing (8 July 2008)
Common Gateway Interface
cgi-bin
CGI program
CGI script

   <World-Wide Web> (CGI) A {standard} for running external
   {programs} from a {World-Wide Web} {HTTP} {server}.  CGI
   specifies how to pass {arguments} to the program as part of
   the HTTP request.  It also defines a set of {environment
   variables} that are made available to the program.  The
   program generates output, typically {HTML}, which the web
   server processes and passes back to the {browser}.
   Alternatively, the program can request {URL redirection}.  CGI
   allows the returned output to depend in any arbitrary way on
   the request.

   The CGI program can, for example, access information in a
   {database} and format the results as HTML.  The program can
   access any data that a normal application program can, however
   the facilities available to CGI programs are usually limited
   for security reasons.

   Although CGI programs can be compiled programs, they are more
   often written in a (semi) {interpreted language} such as
   {Perl}, or as {Unix} {shell scripts}, hence the common name
   "CGI script".

   Here is a trivial CGI script written in Perl.  (It requires
   the "CGI" module available from {CPAN}).

    #!/usr/bin/perl
    use CGI qw(:standard);

    print header, start_html,
      h1("CGI Test"),
      "Your IP address is: ", remote_host(),
      end_html;

   When run it produces an {HTTP} header and then a simple HTML
   page containing the {IP address} or {hostname} of the machine
   that generated the initial request.  If run from a command
   prompt it outputs:

     Content-Type: text/html; charset=ISO-8859-1

     <!DOCTYPE html
   	  PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
   	   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     <html xmlns="http://www.w3.org/1999/xhtml"
       lang="en-US" xml:lang="en-US">
     <head>
     <title>Untitled Document</title>
     <meta http-equiv="Content-Type"
       content="text/html; charset=iso-8859-1" />
     </head>
     <body>
     <h1>CGI Test</h1>Your IP address is: localhost
     </body>
     </html>

   The CGI program might be saved as the file "test.pl" in the
   appropriate directory on a web server,
   e.g. "/home/httpd/test".

   Accessing the appropriate {URL}, e.g.
   http://acme.com/test/test.pl, would cause the program to
   run and a custom page produced and returned.

   Early web servers required all CGI programs to be installed in
   one directory called cgi-bin but it is better to keep them
   with the HTML files to which they relate unless they are truly
   global to the site.  Similarly, it is neither necessary nor
   desirable for all CGI programs to have the extension ".cgi".

   Each CGI request is handled by a new process.  If the process
   fails to terminate for some reason, or if requests are
   received faster than the server can respond to them, the
   server may become swamped with processes.  In order to improve
   performance, {Netscape} devised {NSAPI} and {Microsoft}
   developed the {ISAPI} standard which allow CGI-like tasks to
   run as part of the main server process, thus avoiding the
   overhead of creating a new process to handle each CGI
   invocation.  Other solutions include {mod_perl} and {FastCGI}.

   Latest version: CGI/1.1.

   (http://hoohoo.ncsa.uiuc.edu/cgi).

   (2007-05-22)
    

[email protected]