比方说我们通常通过
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
这样的?我怀疑这会不会奏效。
发布于 2010-11-16 00:28:09
通常,为了将参数传递给命令行脚本,您将使用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
执行相同的操作。
发布于 2012-08-15 15:23:46
使用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
发布于 2011-04-12 06:13:58
使用:
php file_name.php var1 var2 varN
然后在PHP语言的第一行设置$_GET
变量,尽管这不是设置$_GET
变量的理想方式,而且您可能会遇到问题,具体取决于您稍后对该变量所做的操作。
if (isset($argv[1])) {
$_GET['variable_name'] = $argv[1];
}
可以从应用程序中的$argv
数组访问启动脚本所用的变量。第一个条目将显示它们所来自的脚本的名称,因此如果您想要处理一组变量,则可能需要执行一个array_shift($argv)
来删除第一个条目。或者只是加载到局部变量中。
https://stackoverflow.com/questions/4186392
复制相似问题