Invoking a CGI script is pretty simple. PHP has a few peculiarities, but you basically only need to setup a list of environment variables, then call the PHP-CGI binary:
setenv GATEWAY_INTERFACE="CGI/1.1"
setenv SCRIPT_FILENAME=/path/to/script.php
setenv QUERY_STRING="id=123&name=title&parm=333"
setenv REQUEST_METHOD="GET"
...
exec /usr/bin/php-cgi
Most of them are boilerplate. SCRIPT_FILENAME
is how you pass the actual php filename to the PHP interpreter, not as exec parameter. Crucial for PHP is also the non-standard variable REDIRECT_STATUS=200
.
For a GET request you only need the environment variables. For a POST request, you simply pipe the HTTP request body as stdin
to the executed php-cgi binary. The returned stdout
is the CGI response consisting of an incomplete HTTP header,
, and the page body.
(Just from memory. There maybe a few more gotchas.)
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…