GNU/Linux >> Linux Esercitazione >  >> Linux

PHP che passa $_GET nel prompt dei comandi di Linux

Da questa risposta su ServerFault:

Usa il php-cgi binario anziché solo php , e passa gli argomenti sulla riga di comando, in questo modo:

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

Il che mette questo in $_GET :

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

Puoi anche impostare variabili di ambiente che verrebbero impostate dal server Web, in questo modo:

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

In genere, per passare argomenti a uno script a riga di comando, utilizzerai 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 ai parametri del metodo HTTP GET, che non sono disponibili nella riga di comando, poiché richiedono un server web per essere popolati.

Se vuoi davvero popolare comunque $_GET, puoi farlo:

// 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
     )
*/

Puoi anche eseguire un determinato script, popolare $_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 puoi fare lo stesso con $_POST e $_COOKIE anche.


Non ho un binario php-cgi su Ubuntu, quindi ho fatto questo:

% 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 semplici esempi di comando trova Linux

  2. Comando Linux mv

  3. comando IP Linux

  4. comando cd di Linux

  5. Passaggio dei parametri $_GET al cron job

Linux quale comando

Comando Data in Linux

Comando W in Linux

Al comando in Linux

Cosa mi dice il mio prompt dei comandi di Linux?

5 dei comandi più noiosi in Linux