GNU/Linux >> Tutoriales Linux >  >> Linux

PHP pasando $_GET en el símbolo del sistema de Linux

De esta respuesta en ServerFault:

Usa el php-cgi binario en lugar de solo php y pase los argumentos en la línea de comando, así:

php-cgi -f index.php left=1058 right=1067 class=A language=English

Lo que pone esto en $_GET :

Array
(
    [left] => 1058
    [right] => 1067
    [class] => A
    [language] => English
)

También puede establecer variables de entorno que establecería el servidor web, como esta:

REQUEST_URI='/index.php' SCRIPT_NAME='/index.php' php-cgi -f index.php left=1058 right=1067 class=A language=English

Por lo general, para pasar argumentos a un script de línea de comando, usará 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 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 completarse.

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 $_GET desde la línea de comandos, 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 $_POST y $_COOKIE también.


No tengo un binario php-cgi en Ubuntu, así que hice esto:

% alias php-cgi="php -r '"'parse_str(implode("&", array_slice($argv, 2)), $_GET); include($argv[1]);'"' --"
% php-cgi test1.php foo=123
<html>
You set foo to 123.
</html>

%cat test1.php
<html>You set foo to <?php print $_GET['foo']?>.</html>

Linux
  1. 25 ejemplos simples del comando de búsqueda de Linux

  2. comando linux mv

  3. Linux du comando

  4. Comando IP de Linux

  5. Pasar parámetros $_GET al trabajo cron

Linux qué comando

Comando de fecha en Linux

Comando W en Linux

Al mando en Linux

¿Qué me dice el símbolo del sistema de Linux?

5 de los comandos más aburridos de Linux