GNU/Linux >> LINUX-Kenntnisse >  >> Linux

PHP übergibt $_GET in der Linux-Eingabeaufforderung

Von dieser Antwort auf ServerFault:

Verwenden Sie den php-cgi binär statt nur php , und übergeben Sie die Argumente wie folgt auf der Befehlszeile:

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

Was dies in $_GET bringt :

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

Sie können auch Umgebungsvariablen setzen, die vom Webserver gesetzt würden, wie folgt:

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

Normalerweise verwenden Sie zum Übergeben von Argumenten an ein Befehlszeilenskript entweder argv globale Variable oder 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 bezieht sich auf die HTTP-GET-Methodenparameter, die in der Befehlszeile nicht verfügbar sind, da sie einen Webserver zum Auffüllen erfordern.

Wenn Sie $_GET trotzdem wirklich füllen möchten, können Sie Folgendes tun:

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

Sie können auch ein bestimmtes Skript ausführen, geben Sie $_GET ein von der Befehlszeile, ohne das Skript ändern zu müssen:

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

Beachten Sie, dass Sie dasselbe mit $_POST tun können und $_COOKIE auch.


Ich habe keine php-cgi-Binärdatei auf Ubuntu, also habe ich Folgendes getan:

% 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 einfache Beispiele für den Linux-Suchbefehl

  2. Linux-mv-Befehl

  3. Linux-Du-Befehl

  4. Linux-IP-Befehl

  5. Linux-cd-Befehl

Welcher Linux-Befehl

Datumsbefehl in Linux

W-Befehl unter Linux

Bei Befehl unter Linux

Was sagt mir meine Linux-Eingabeaufforderung?

5 der langweiligsten Befehle in Linux