34

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

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

4

3 回答 3

63

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

/* 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'
于 2013-07-18T13:12:55.080 回答
19

这并不容易做到。您可以调用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

于 2011-04-13T20:46:45.033 回答
1
curl --data "name=ii" "param1=value1&param2=value2" http://test.com/sample.php
于 2013-06-27T12:57:04.593 回答