thinkphp3.2.3在cli命令格式下如何携带get参数

如果我有一个接口可以通过如下方式访问www.a.com/a/b/action?id=1&type=2
现在我想在cli模式下怎么使用这个参数,我之前使用的方式是这样的php /webroot/index.php /a/b/action但是这中方式我带上参数就会出错。

阅读 3.7k
3 个回答

$_GET是Http Get方法的参数,它在命令行模式下不可用,因为它需要web server来填充。
如果你非要用的话,可以在脚本前面加上

// bash command:
//   export QUERY_STRING="var=value&arg=value" ; php -e myscript.php
parse_str($_SERVER['QUERY_STRING'], $_GET);
print_r($_GET);

或者不想改动脚本,这样搞

php -e -r 'parse_str("id=1&type=2", $_GET); include "index.php";'

Stack Overflow传送门

php index.php module/controller/action/p1/p2/p3/p4
GET = [p1 =>p2, p3=> p4]

谢邀 sorry 不太了解thinkphp 不过/a/b/action这个控制器的get参数是从http请求中拿的 理论上你从cli是无法拿到的哦 不知道你cli访问的目的是什么 是否可以用 curl www.a.com/a/b/action?id=1&type=2这种命令代替? 或者在/a/b/这个控制器中试试判断cli环境然后手动解析参数。

if (PHP_SAPI === 'cli') {
    $getArgs=$argv[1];
    //伪代码 解析可以用给action?id=1&type=2 拼个假host然后用parse_url拿get参数
    $param=parse($params);
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题