Provided by: libfcgi-bin_2.4.0-10build1_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)