En règle générale, pour passer des arguments à un script de ligne de commande, vous utiliserez soit argv
une variable globale, soit 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 renseignés.
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é, le remplir à $_GET
partir de 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 également faire de même avec $_POST
et $_COOKIE
.
php [script name] "a=1&b=2&c=3"
ne remplira pas le$_SERVER['QUERY_STRING']
, mais vous pouvez facilement affecter la même chose en référençant$_SERVER['argv'][1]
.getopt()
, cela indique apparemment à PHP que vous voulez l' argumentf
, pas l' optionf
(qui serait spécifiée moins les deux points). C'est donc juste de la syntaxe.À partir de cette réponse sur ServerFault :
Utilisez le
php-cgi
binaire au lieu de justephp
, et passez les arguments sur la ligne de commande, comme ceci:Ce qui met cela en
$_GET
:Vous pouvez également définir des variables d'environnement qui seraient définies par le serveur Web, comme ceci:
la source
<b>Notice</b>: Undefined index: testing in <b> ... </b><br />
php-cgi -f /var/www/vhosts/example.com/public_html/index.php action=DoSomething
Works Good ..Je n'ai pas de binaire php-cgi sur Ubuntu, alors j'ai fait ceci:
la source
Parfois, vous n'avez pas la possibilité d'éditer le fichier php pour définir $ _GET sur les paramètres passés, et parfois vous ne pouvez pas ou ne voulez pas installer php-cgi.
J'ai trouvé que c'était la meilleure solution pour ce cas:
Cela évite de modifier votre fichier php et vous permet d'utiliser la commande php simple. Si vous avez installé php-cgi, utilisez-le certainement, mais c'est la meilleure chose à faire. J'ai pensé que ces options méritaient d'être mentionnées
le -r signifie exécuter le code php dans la chaîne suivante. vous définissez la valeur $ _GET manuellement ici, puis référencez le fichier que vous souhaitez exécuter.
Il est intéressant de noter que vous devez l'exécuter dans le bon dossier, souvent mais pas toujours dans le dossier dans lequel se trouve le fichier php. Les instructions requises utiliseront l'emplacement de votre commande pour résoudre les URL relatives, PAS l'emplacement du fichier
la source
Ensuite, définissez vos
$_GET
variables sur votre première ligne en PHP, bien que ce ne soit pas la manière souhaitée de définir une$_GET
variable et que vous puissiez rencontrer des problèmes en fonction de ce que vous faites plus tard avec cette variable.les variables avec lesquelles vous lancez le script seront accessibles depuis le
$argv
tableau de votre application PHP. la première entrée sera le nom du script dont ils proviennent, vous pouvez donc vouloirarray_shift($argv)
supprimer cette première entrée si vous voulez traiter un tas de variables. Ou simplement charger dans une variable locale.la source
Essayez d'utiliser
WGET
:la source
$_GET
implique généralement un serveur Web en cours d'exécution.- Option 1: php-cgi -
Utilisez «php-cgi» à la place de «php» pour exécuter votre script. C'est le moyen le plus simple car vous n'aurez pas besoin de modifier spécialement votre code php pour travailler avec lui:
- Option 2: si vous avez un serveur Web -
Si le fichier php est sur un serveur Web, vous pouvez utiliser 'wget' sur la ligne de commande:
OU:
- Accéder aux variables en php -
Dans les deux options 1 et 2, vous accédez à ces paramètres comme ceci:
la source
Si vous devez passer
$_GET
,$_REQUEST
,$_POST
ou tout ce que vous pouvez également utiliser le mode interactif PHP:Tapez ensuite:
Cela définira manuellement toutes les variables souhaitées, puis exécutera votre fichier php avec ces variables définies.
la source
Si vous avez la possibilité d'éditer le script PHP, vous pouvez remplir artificiellement le tableau $ _GET en utilisant le code suivant au début du script, puis appeler le script avec la syntaxe:
php -f script.php name1=value1 name2=value2
la source
Sur la ligne de commande, collez ce qui suit
la source
Je les passe juste comme ça:
fonctionne très bien, le tableau $ _GET est:
la source
php -r 'parse_str($argv[2],$_GET);include $argv[1];' index.php 'a=1&b=2'
Vous pouvez créer la première partie en tant qu'alias:
alias php-get='php -r '\''parse_str($argv[2],$_GET);include $argv[1];'\'
puis utilisez simplement:
php-get some_script.php 'a=1&b=2&c=3'
la source
ou simplement (si vous avez LYNX):
la source