如何通过命令行将$ _GETvariables传递给PHP脚本?

我正在尝试创build一个服务于PHP脚本的Web服务器。 目前,它的工作原理如下:

  1. 客户端请求/index.php?test=value
  2. 服务器调用php index.php
  3. 服务器将HTTP请求标头作为STDIN提供给PHP进程
  4. 服务器从STDOUT中读取php的输出并将其返回给客户端

所有这些工作除了参数不被传递给PHP脚本,因为:

 var_dump($_GET); 

收益:

数组(0){}

$_GET参数在调用时如何传递给PHP二进制文件?

    你使用哪个PHP二进制文件? CLI还是CGI? 我怀疑你需要PHP的二进制CGI版本来正确处理接受环境variables和POST数据,如果你通过。

    php-cgi二进制文件实现了CGI接口,它允许你在命令行上传递参数:

     php-cgi -f index.php left=1058 right=1067 class=A language=English 

    最后在$_GET

     Array ( [left] => 1058 [right] => 1067 [class] => A [language] => English ) 

    您可能需要了解CGI如何工作,以便您可以在Web服务器中实现它。

    Ref: RFC3875

    根据维基百科 ,答案是设置QUERY_STRING环境variables:

     QUERY_STRING='user=foo&pass=bar&left=1234' php-cgi index.php 

    或分开的步骤:

     export QUERY_STRING='user=foo&pass=bar&left=1234' php-cgi index.php 

    如果你使用php-cgi命令,这是有效的,因为这是CGI规范的一部分。 普通的php命令忽略这个variables,但你的脚本可能会使用它。

    如果你通过php script.php test = asdf

     $result = parse_args($argv,$argc,$help); print_r($result); 

    如果你将它传递给STDIN,你需要阅读STDIN并自己parsing头文件。 REQUEST_URI将包含您需要的数据,您可以通过该数据。