如何通过python设置php的$ _GET和$ _POST变量?

时间:2016-03-14 14:08:51

标签: php python-3.x

我正在开发一个简单的python web服务器用于教育目的。我希望我的服务器能够在请求上运行PHP脚本。我可以通过创建一个类似于此answer的子进程来执行php代码,并将其输出作为字节。这可以帮助我执行大多数PHP内置函数。但我还想模拟$ _GET和$ _POST变量,比如,当用户发送POST请求时,我希望它的参数在$ _POST全局变量中可用。

我可能会破解我给子进程的命令,但我听说,在像Apache这样的真实Web服务器中,PHP从环境变量中获取这些变量的值(我认为是通用网关接口标准)。 / p>

但是,当我设置一个名为QUERY_STRING的环境变量时,php不会设置$ _GET的值。让我展示一下大局:

的index.php

<?php var_dump($_GET); ?>

我在shell中的命令:

export QUERY_STRING="foo=bar"
php index.php

这个剪断的命令并没有给我想要的输出(Array =&gt; [&#39; foo&#39;] =&#39; bar&#39;)。这是我的问题:

  • 上面的代码中我的错误是什么?
  • 如何在python中将这两个全局变量($ _GET和$ _POST)注入PHP脚本?

我的python版本是3.4.3,我使用的是ubuntu 14.04

1 个答案:

答案 0 :(得分:1)

试试这个:

$ php -f index.php foo=bar

在索引php中执行:

parse_str(implode('&', array_slice($argv, 1)), $_GET);

之后你会得到这个结果:

echo $_GET['foo'];// prints 'bar'

page

的末尾阅读更多示例