Man Linux: Main Page and Category List

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)