Provided by: libfcgi-bin_2.4.2-2.1ubuntu0.24.04.1_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)