Típicamente, para pasar argumentos a un script de línea de comandos, que va a utilizar, ya sea argv
variable 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 protocolos HTTP GET parámetros de método, que no están disponibles en la línea de comandos, ya que requieren un servidor web para poblar.
Si realmente desea llenar $ _GET todos modos, se 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, llenar $_GET
desde la línea de comandos, sin tener que modificar dicho guión:
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 $_POST
y $_COOKIE
también.
Vale la pena señalar que, en nuestra máquina Centos 6 que ejecuta PHP 5.3, llamar 'php [nombre de script] '' a = 1 & b = 2 & c = 3 '' no completará' $ _SERVER ['QUERY_STRING'] ', pero puede fácilmente afecta lo mismo al hacer referencia a '$ _SERVER ['argv'] [1]'. –
Pruebe [esta respuesta] (http://stackoverflow.com/a/11965479/648162) para rellenar la cadena de consulta desde la línea de comandos sin modificar el script PHP. – qris
Esta no es la mejor respuesta. Vea esta otra respuesta en esta página: http://stackoverflow.com/a/11965479/543738 –