鍍金池/ 問(wèn)答/PHP/ thinkphp3.2.3在cli命令格式下如何攜帶get參數(shù)

thinkphp3.2.3在cli命令格式下如何攜帶get參數(shù)

如果我有一個(gè)接口可以通過(guò)如下方式訪問(wèn)www.a.com/a/b/action?id=1&type=2
現(xiàn)在我想在cli模式下怎么使用這個(gè)參數(shù),我之前使用的方式是這樣的php /webroot/index.php /a/b/action但是這中方式我?guī)蠀?shù)就會(huì)出錯(cuò)。

回答
編輯回答
還吻

$_GET是Http Get方法的參數(shù),它在命令行模式下不可用,因?yàn)樗枰獁eb server來(lái)填充。
如果你非要用的話,可以在腳本前面加上

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

或者不想改動(dòng)腳本,這樣搞

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

Stack Overflow傳送門(mén)

2017年7月11日 14:08
編輯回答
久不遇

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

2018年1月15日 19:17
編輯回答
傻丟丟

謝邀 sorry 不太了解thinkphp 不過(guò)/a/b/action這個(gè)控制器的get參數(shù)是從http請(qǐng)求中拿的 理論上你從cli是無(wú)法拿到的哦 不知道你cli訪問(wèn)的目的是什么 是否可以用 curl www.a.com/a/b/action?id=1&type=2這種命令代替? 或者在/a/b/這個(gè)控制器中試試判斷cli環(huán)境然后手動(dòng)解析參數(shù)。

if (PHP_SAPI === 'cli') {
    $getArgs=$argv[1];
    //偽代碼 解析可以用給action?id=1&type=2 拼個(gè)假host然后用parse_url拿get參數(shù)
    $param=parse($params);
}
2018年3月16日 00:53