cgi-fcgi man page

    cgi-fcgi   - bridge from CGI to FastCGI

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

    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

    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

        /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.
    The usual CGI ones, but they are not interpreted by cgi-fcgi.


    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.

    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 1997/09/16 15:36:26 stanleyg Exp $

Referenced By

FCGI_Accept(3), FCGI_SetExitStatus(3), FCGI_StartFilterData(3).