Как правило, для передачи аргументов сценарию командной строки вы будете использовать либо 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, которые недоступны в командной строке, поскольку для их заполнения требуется веб-сервер.
Если вы все равно действительно хотите заполнить $ _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 [script name] "a=1&b=2&c=3"
не будет заполняться$_SERVER['QUERY_STRING']
, но вы можете легко повлиять на то же самое, указав$_SERVER['argv'][1]
.