在Linux命令提示符下如何传递$ _GET?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (116)

我们通常通过这样访问

http://localhost/index.php?a=1&b=2&c=3

我们如何在linux命令提示符下执行相同的操作?

php -e index.php

传递$ _GET变量呢?也许有点像php -e index.php --a 1 --b 2 --c 3?

谢谢!

提问于
用户回答回答于

通常,为了将参数传递给命令行脚本,使用argv全局变量或getopt

// bash command:
//   php -e myscript.php hello
echo $argv[1]; // prints hello

// bash command:
//   php -e myscript.php -f=world
$opts = getopt('f:');
echo $opts['f']; // prints world

$ _GET引用HTTP GET方法参数,这些参数在命令行中不可用,因为它们需要填充Web服务器。

如果你真的想要填充$ _GET,你可以这样做:

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

你也可以执行给定的脚本,$_GET从命令行填充,而无需修改所述脚本:

export QUERY_STRING="var=value&arg=value" ; \
php -e -r 'parse_str($_SERVER["QUERY_STRING"], $_GET); include "index.php";'

请注意,你可以用相同的$_POST$_COOKIE

用户回答回答于

使用php-cgi二进制代替只是php,并在命令行上传递参数,如下所示:

php-cgi -f index.php left=1058 right=1067 class=A language=English

这把这个放在$_GET

Array
(
    [left] => 1058
    [right] => 1067
    [class] => A
    [language] => English
)

你也可以设置Web服务器设置的环境变量,如下所示:

REQUEST_URI='/index.php' SCRIPT_NAME='/index.php' php-cgi -f index.php left=1058 right=1067 class=A language=English

扫码关注云+社区

领取腾讯云代金券