GNU/Linux >> Znalost Linux >  >> Linux

PHP předá $_GET v příkazovém řádku linuxu

Z této odpovědi na ServerFault:

Použijte php-cgi binární místo pouze php a předejte argumenty na příkazovém řádku takto:

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

Což dává toto do $_GET :

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

Můžete také nastavit proměnné prostředí, které by nastavil webový server, takto:

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

Pro předávání argumentů skriptu příkazového řádku obvykle použijete buď argv globální proměnná nebo 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 odkazuje na parametry metody HTTP GET, které nejsou dostupné v příkazovém řádku, protože vyžadují k naplnění webový server.

Pokud opravdu chcete naplnit $_GET, můžete to udělat takto:

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

Můžete také spustit daný skript, naplnit $_GET z příkazového řádku, aniž byste museli upravovat uvedený skript:

export QUERY_STRING="var=value&arg=value" ; \
php -e -r 'parse_str($_SERVER["QUERY_STRING"], $_GET); include "index.php";'

Všimněte si, že totéž můžete udělat s $_POST a $_COOKIE také.


Na Ubuntu nemám binární soubor php-cgi, takže jsem udělal toto:

% 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 jednoduchých příkladů příkazu find v Linuxu

  2. Linuxový příkaz mv

  3. Předávání parametrů $_GET do úlohy cron

  1. Linux du command

  2. Linuxový ip příkaz

  3. Linux cd příkaz

  1. Linux příkaz ifconfig

  2. Linux Time Command

  3. Příkaz Ping v Linuxu