IndexModulesHandlers

Handler: CGI

The cgi handler executes CGI programs.

Parameters

This module accepts three parameters:

Parameters Type Description
Script Alias String It defines a kind of execution interpreter. The CGI will be run as a parameter of this script.
Change to UID String Executes each CGI under its owner's user ID.
Error handler Boolean Use CGI output as error message.
Check file Boolean Check file existence to build PATH_INFO.
Pass request Boolean Pass request headers.
Allow X-Sendfile Boolean Use the non-standard X-Sendfile header.
Pass Request Headers Boolean Forward all the headers to the CGI as HTTP_*

Note that the X-Sendfile feature also supports X-Accel-Redirect headers transparently. This is to allow the migration of applications supporting it whithout having to make major code rewrites.

Warning:

The Check file flag affects how PATH_INFO is generated. You should disable this when you have an application that is running the whole virtual server tree, as it is a common source of problems. You can look at a practical example about PATH_INFO in the File & Send handler documentation.

Examples

This is a pretty common example. It defines a directory called cgi that points to a path out of the Sever root directory where the CGI programs are located.

CGI
Script Alias

Another example could be the case where you wanted your default requests to be managed by a specific script.

A real life example could be running Trac as a CGI script. In that case you would want to map a URL to the trac.cgi script.

For this you only need to set up the Script Alias option. Assuming you are using a Directory-type rule for the path /trac managed by the CGI handler, you could set /usr/share/trac/cgi-bin/trac.cgi as Script Alias.

After this, every request that matched the /trac path would be managed by the trac.cgi script.

Can you improve this entry?