In genere, per il passaggio di argomenti per uno script da riga di comando, si utilizzerà uno argv
variabile globale 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 si riferisce alla HTTP GET parametri del metodo, che non sono disponibili nella riga di comando, poiché richiedono un server web da popolare.
Se si vuole veramente popolare $ _GET in ogni caso, si può fare questo:
// 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
)
*/
Si può anche eseguire un determinato copione, popolano $_GET
dalla riga di comando, senza dover modificare detto script:
export QUERY_STRING="var=value&arg=value" ; \
php -e -r 'parse_str($_SERVER["QUERY_STRING"], $_GET); include "index.php";'
Nota che è possibile fare lo stesso con $_POST
e $_COOKIE
.
Vale la pena notare che, sulla nostra macchina Centos 6 con PHP 5.3, chiamare 'php [nome script]" a = 1 & b = 2 & c = 3 "' non popolerà '$ _SERVER ['QUERY_STRING']', ma si può facilmente influenza la stessa cosa facendo riferimento a '$ _SERVER ['argv'] [1]'. –
Prova [questa risposta] (http://stackoverflow.com/a/11965479/648162) per popolare la stringa di query dalla riga di comando senza modificare lo script PHP. – qris
Questa non è la migliore risposta. Vedi questa altra risposta in questa pagina: http://stackoverflow.com/a/11965479/543738 –