GNU/Linux >> Tutoriels Linux >  >> Linux

PHP passant $_GET dans l'invite de commande Linux

À partir de cette réponse sur ServerFault :

Utilisez le php-cgi binaire au lieu de simplement php , et transmettez les arguments sur la ligne de commande, comme ceci :

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

Ce qui met cela dans $_GET :

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

Vous pouvez également définir des variables d'environnement qui seraient définies par le serveur Web, comme ceci :

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

Généralement, pour passer des arguments à un script de ligne de commande, vous utiliserez soit argv variable globale ou 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 fait référence aux paramètres de la méthode HTTP GET, qui ne sont pas disponibles en ligne de commande, car ils nécessitent un serveur Web pour être remplis.

Si vous voulez vraiment remplir $_GET de toute façon, vous pouvez le faire :

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

Vous pouvez également exécuter un script donné, remplir $_GET depuis la ligne de commande, sans avoir à modifier ledit script :

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

Notez que vous pouvez faire la même chose avec $_POST et $_COOKIE aussi.


Je n'ai pas de binaire php-cgi sur Ubuntu, j'ai donc fait ceci :

% 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 exemples simples de la commande Linux find

  2. Commande Linux mv

  3. Linux du command

  4. Commande IP Linux

  5. Commande cd Linux

Linux Quelle commande

Commande de date sous Linux

Commande W sous Linux

À la commande sous Linux

Qu'est-ce que mon invite de commande Linux me dit?

5 des commandes les plus ennuyeuses de Linux