PHP 在 Linux 命令提示符下传递 $_GET
假设我们通常通过以下方式访问
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
假设我们通常通过以下方式访问
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
使用二进制文件而不是仅 ,并在命令行上传递参数,如下所示: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
通常,要将参数传递给命令行脚本,您将使用全局变量或 getopt:argv
// 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