views:

44

answers:

2

I am developing a webserver that invokes the PHP binary (via CGI) to process a script.

Here's the problem:

The PHP script isn't picking up the command line parameters. For example, if the client requests path/to/file.php?test=value, the $_GET array is empty.

I have tried passing the parameters in an environment variable (QUERY_STRING), but they still don't show up.

How can I pass query string parameters to a PHP application?

A: 

Are you talking about command line parameters or $_GET parameters? Those are not the same.

When using a webbrowser, $_GET is used. But if you're passing command line arguments like /path/to/file.php arg1 arg2, then you have to use $argv (and $argc contains the length of elements).

$argv[0] always contains the running file, in this example /path/to/file.php.
$argv[1] is arg1 in this case and $argv[2] is arg2. So $argc contain 3.

Helpful resources:

Lekensteyn
+1  A: 

There are various SAPIs for PHP. One of them is cli SAPI which apparently is what you're using, cli SAPI wouldn't populate $_GET, $_POST ... because it's for command line scripting.

In your case you need PHP cgi SAPI. (e.g., You need to replace php with php-cgi[1] in your shebang)

[1] In most distribuitons it's called php-cgi, if you compile PHP yourself you need to enable cgi.

racetrack
Ah, that explains it. Thanks!
George Edison