Por lo general, para pasar argumentos a un script de línea de comando, usará una argvvariable global o 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 se refiere a los parámetros del método HTTP GET, que no están disponibles en la línea de comandos, ya que requieren un servidor web para rellenar.
Si realmente desea completar $ _GET de todos modos, puede hacer esto:
// 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
)
*/
También puede ejecutar un script dado, completar $_GETdesde la línea de comando, sin tener que modificar dicho script:
export QUERY_STRING="var=value&arg=value" ; \
php -e -r 'parse_str($_SERVER["QUERY_STRING"], $_GET); include "index.php";'
Tenga en cuenta que puede hacer lo mismo con $_POSTy $_COOKIEtambién.
php [script name] "a=1&b=2&c=3"no se completarán$_SERVER['QUERY_STRING'], pero puede afectar fácilmente lo mismo haciendo referencia$_SERVER['argv'][1].