繁体   English   中英

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

[英]How can I pass parameters from the command line to $_POST in a PHP script?

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

不幸的是,我无法在任何地方为我的Ubuntu安装找到libapache2-mod-php5

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

/* 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'

这并不容易做到。 您可以调用php-cgi二进制文件并通过管道将假 POST 请求传入。但是您需要设置大量 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一样调用它。

curl --data "name=ii" "param1=value1&param2=value2" http://test.com/sample.php

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM