xenial (1) cgi-fcgi.1.gz

Provided by: libfcgi0ldbl_2.4.0-8.3_amd64 bug

NAME

       cgi-fcgi - bridge from CGI to FastCGI

SYNOPSIS

       cgi-fcgi -f cmdPath
       cgi-fcgi -bind  -connect connName
       cgi-fcgi -start -connect connName appPath [nServers]
       cgi-fcgi -connect connName appPath [nServers]

DESCRIPTION

       cgi-fcgi  is  a CGI/1.1 program that communicates with an already-running FastCGI application in order to
       respond to an HTTP request.  cgi-fcgi is also capable of starting a FastCGI application.

       When you invoke cgi-fcgi as

              cgi-fcgi -f cmdPath

       then cgi-fcgi opens the file at cmdPath and reads its arguments from that file.  cgi-fcgi will skip lines
       that  begin  with  the comment character #.  The first non-comment line should contain valid arguments in
       one of the other three forms.

       The -f form of cgi-fcgi is designed for Unix systems whose exec(2) family of system  calls  supports  the
       execution  of  command  interpreter  files.  For instance, if a file with execute permission contains the
       text

              #! /bin/cgi-fcgi -f
              -connect /httpd/root/sock/app /httpd/root/bin/app

       the effect is the same as executing

              /usr/bin/cgi-fcgi -connect /httpd/root/sock/app /httpd/root/bin/app

       When you invoke cgi-fcgi as

              cgi-fcgi -bind -connect connName

       the connName argument is either the path name of a Unix domain listening socket or a host:port pair.   If
       connName contains a colon, it is assumed to be host:port.  cgi-fcgi performs a connect(2) using connName.
       If the connect succeeds, cgi-fcgi forwards the CGI environment variables and stdin data  to  the  FastCGI
       application,  and  forwards  the  stdout  and stderr data from the application to cgi-fcgi's stdout (most
       likely connected to a Web server).  When the FastCGI application signals the end of  its  response,  cgi-
       fcgi flushes its buffers and exits, and the Web server completes the http response.

       When you invoke cgi-fcgi as

              cgi-fcgi -start -connect connName appPath [nServers]

       then  cgi-fcgi performs the function of starting one or more FastCGI application processes.  The connName
       argument specifies either the path name of the Unix domain listening socket that cgi-fcgi will create, or
       is  "localhost:NNN" where NNN is the port number of the TCP/IP listening socket that cgi-fcgi will create
       on the local machine.  (cgi-fcgi will not create processes on remote machines.)  After  cgi-fcgi  creates
       the  listening  socket,  it  forks  nServers copies of a process running the executable file appPath.  If
       nServers is omitted, the effect is as if the value "1" had  been  specified.   The  processes  share  the
       single listening socket.

       When you invoke cgi-fcgi as

              cgi-fcgi -connect connName appPath [nServers]

       cgi-fcgi  performs -bind and then, if necssary, performs -start and repeats the -bind.  That is, cgi-fcgi
       first operates as if the command had been

              cgi-fcgi -bind -connect connName

       If the connect fails, cgi-fcgi tries

              cgi-fcgi -start -connect connName appPath [nServers]

       and finally retries

              cgi-fcgi -bind -connect connName

       In this form, cgi-fcgi does not support TCP/IP connections.

ENVIRONMENT VARIABLES

       The usual CGI ones, but they are not interpreted by cgi-fcgi.

SEE ALSO

       FGCI_accept(3).
        (in Debian, /usr/share/doc/libfcgi?/*)

BUGS

       cgi-fcgi doesn't generate useful HTTP responses in case of error, and it generates  no  response  at  all
       when run as start-fcgi.

       On Digital UNIX 3.0 systems the implementation of Unix Domain sockets does not work when such sockets are
       stored on NFS file systems.  Symptom: cgi-fcgi may core dump or may exit with  status  38.   Work-around:
       store sockets in local file systems (/tmp often works) or use TCP/IP.

       On  AIX systems the implementation of listening sockets does not support socket sharing, and the standard
       FastCGI application libraries can't synchronize access to AIX listening sockets.  Work-around: Don't  use
       the nServers argument on AIX.

HISTORY

       Copyright  (c)  1996  Open  Market,  Inc.   See  the  file  "LICENSE.TERMS"  for information on usage and
       redistribution of this file,  and  for  a  DISCLAIMER  OF  ALL  WARRANTIES.   $Id:  cgi-fcgi.1,v  1.1.1.1
       1997/09/16 15:36:26 stanleyg Exp $

                                                   1997-09-17                                        cgi-fcgi(1)