如何在PHP脚本中将参数从命令行传递到$_POST?

我知道这听起来可能有点奇怪,但我需要将一些参数传递给$_POST数组。类似于Apache或任何其他Web服务器的方式。

不幸的是,我找不到我的Ubuntu安装的任何地方。libapache2-mod-php5


答案 1

只需在脚本开头插入以下行:

/* If started from the command line, wrap parameters to $_POST and $_GET */
if (!isset($_SERVER["HTTP_HOST"])) {
  parse_str($argv[1], $_GET);
  parse_str($argv[1], $_POST);
}

这一小段代码可以解决问题(你可以决定是要使用_GET美元还是_POST美元,或者像我一样,两者兼而有之。

更改脚本后,可以从命令行调用它,传递参数:

php yourscript.php 'arg1=x&arg2=y'

答案 2

这并不容易做到。您可以调用二进制文件并通过管道传入虚假的 POST 请求。但是您需要设置大量的 CGI 环境变量:php-cgi

echo 'var1=123&var2=abc' | REQUEST_METHOD=POST  SCRIPT_FILENAME=script.php REDIRECT_STATUS=CGI CONTENT_TYPE=application/www-form-urlencoded php-cgi 

注意:不足,不是那样工作的。但是像这样的东西...


如果您只是修补脚本,并让它从预定义的环境变量加载 $_POST 数组,这当然会更容易。

$_POST = parse_url($_SERVER["_POST"]);

然后,您可以像简单一样调用它。_POST=var=123 php script.php


推荐