Comment passer les paramètres de la ligne de commande à $ POST dans php-script?
Je sais que cela peut sembler un peu bizarre mais j'ai besoin de passer quelques paramètres à un tableau $_POST. Similaire à la façon dont apache le fait, ou tout autre serveur web.
Malheureusement, je ne pouvais pas trouver {[0] } n'importe où pour mon Ubuntu.
3 réponses
Ce n'est pas facile à faire. Vous pouvez appeler le binaire php-cgi
et envoyer une fausse requête POST. Mais vous devrez configurer beaucoup de variables D'environnement CGI:
echo 'var1=123&var2=abc' | REQUEST_METHOD=POST SCRIPT_FILENAME=script.php REDIRECT_STATUS=CGI CONTENT_TYPE=application/www-form-urlencoded php-cgi
Note: Insuffisant, ne fonctionne pas comme ça. Mais quelque chose comme ça...
C'est certainement plus facile si vous venez de patcher le script et de le laisser charger le tableau $_POST à partir d'une variable d'environnement prédéfinie.
$_POST = parse_url($_SERVER["_POST"]);
Ensuite, vous pouvez l'invoquer comme _POST=var=123 php script.php
pour plus de simplicité.
Je cherchais une solution pour cela et je suis passé, parce que c'était le premier succès chez Google. le second était en quelque sorte plus utile pour moi, car il a une solution vraiment facile, si vous avez accès au script PHP et pouvez le changer.
Insérez simplement les lignes suivantes au début de votre script:
/* if started from commandline, wrap parameters to $_POST and $_GET */
if (!isset($_SERVER["HTTP_HOST"])) {
parse_str($argv[1], $_GET);
parse_str($argv[1], $_POST);
}
Ce petit morceau de code fait l'affaire (vous pouvez décider si vous voulez utiliser $_GET ou $_POST ou, comme j'en avais besoin, les deux.
Après avoir changé votre script vous pouvez l'appeler à partir de la ligne de commande en passant vos arguments:
php yourscript.php 'arg1=x&arg2=y'
Amusez-vous!
Utiliser curl pour publier des données
curl --data "name=ii" "param1=valeur1¶m2=valeur2" http://test.com/sample.php