---
name: "fdcgi"
section: "1"
platform: "linux"
package: "framerd"
version: "2.4.1-1.1"
release: "Debian 3.1 (Sarge)"
platforms: ["linux"]
url: "https://new.carta.tech/fdcgi"
---

# fdcgi(1)

execute a CGI script implemented in FDScript

## NAME

fdcgi - execute a CGI script implemented in FDScript

## SYNOPSIS

**fdcgi** *filename* **\[** *query* **\]**

This is an FDScript interpreter designed to be invoked as a CGI processor by a web server (typically Apache).

## DESCRIPTION

When started, it uses both the execution environment and the standard input to set up a slotmap containing information about a CGI request. It then loads the file *filename* which can either generate HTML output directly or define a procedure **(main)** to generate the output.  When FramerD is compiled with access to the fastcgi library and the web server uses the fastcgi module, the fdcgi interpreter will handle an indefinite series of requests in the same process, avoiding the overhead of starting a new process for each request.

The procedure **(CGI-DATA)** returns the slotmap describing the current request.  The special form **(CGI-INIT** *vars...* **)** binds each  *var* to the string or list of strings passed under the name *var.* The special form  **(CGI-VAR** *vars...* **)** does the exact same thing except that the strings  strings are passed to the lisp parser (so the string "3" is converted to the number 3) and the lists are converted into choices of these parsed values.

For debugging purposes, the optional argument *query* will be bound to be the  **QUERY\_STRING** in an artificial request before processing the file as normal.

## OPTIONS

## ENVIRONMENT

The following variables are typically bound and accessible on the **(CGI-DATA)** slotmap as well as through  **(CGI-INIT)** and **(CGI-VAR)**

- SERVER\_SOFTWARE

  The type and version of the web server passing on this CGI request

- SERVER\_NAME

  The name of the server passing on the request

- SERVER\_PORT

  The port on which the server is listening

- SCRIPT\_NAME

  The name of the script being run

- HTTP\_REFERER

  If provided, this is the document from which this script was invoked

- HTTP\_USER\_AGENT

  The kind of program making the request, often the web browser being used by the human requestor

- REMOTE\_IDENT

  Rarely provided, this is an identifier of the individual making the reauest

- REMOTE\_HOST

  This is the hostname of the machine from which the request apparently originated.

- REMOTE\_ADDR

  This is the IP address (dd.dd.dd.dd) of the machine from which the request apparently originated.

- PATH\_INFO

  This is the part of the URL which occurs after the script name but before any parameters

- DOCUMENT\_ROOT

  This is the document root

- PATH\_TRANSLATED

  This is the local file to which this request was translated

- AUTH\_TYPE

  This describes how the user authenticated her/him/itself.

- REMOTE\_USER

  This describes who the user authenticated her/him/itself as.

- HTTP\_COOKIE

  This is the "cookie" passed with this request.  The individual components of this cookie are separated out into separate fields in the **CGI-DATA** slotmap

- SERVER\_HOST

  This is host on which the server is running.  This will differ from  **SERVER\_NAME** only if virtual hosts are being used

- HTTPS

  This is true if the connection with client is a secure (SSL) connection.

- HTTP\_ACCEPT

  - HTTP\_ACCEPT\_CHARSET

  - HTTP\_ACCEPT\_ENCODING

  - HTTP\_ACCEPT\_LANGUAGE

  - REQUEST\_METHOD

  This is the request method.  Only  **GET** and **POST** are currently handled

- CONTENT\_TYPE

  This is the mime time of any data sent with the request

- CONTENT\_LENGTH

  This is the number of bytes of data sent along with the request

- QUERY\_STRING

  This is the query string passed with the request.  If it provides form variables (common when the REQUEST\_METHOD is GET), these variables are each broken out and assigned to the slotmap.

- POST\_DATA

  This is the actual data sent along with the request.  If the mime type is a text type, this is a string; otherwise, it is a packet.  If the post data contains form variables (either url-encoded or mime-encoded), these are broken out

- PARSED\_POST

  When the posted data is a multi-part mime document, this is the parsed document.

## BUGS

None known.

## Revision Info

**$Id: fdcgi.1,v 1.1 2002/05/29 18:38:01 haase Exp $**

## AUTHOR

Ken Haase \< kh@beingmeta.com \>

## SEE ALSO

[**fdxml**(1)](/fdxml/1.md) [**fdservlet**(1)](/fdservlet/1.md)
