web-dev-qa-db-fra.com

Comment passer des paramètres de bash au script php?

J'ai fait un script bash qui exécute un script php. Cela fonctionne très bien sans paramètres mais quand j'ajoute des paramètres (id et url), il y a quelques erreurs:

PHP Deprecated:  Comments starting with '#' are deprecated in /etc/php5/cli/conf                                                                                        .d/mcrypt.ini on line 1 in Unknown on line 0
Could not open input file: /var/www/dev/dbinsert/script/automatisation.php?                                                                                        id=1

Je lance le script php depuis le bash comme ceci:

php /var/www/dev/dbinsert/script/automatisation.php?id=19&url=http://bkjbezjnkelnkz.com
23
user420574

Appelez-le comme:

php /path/to/script/script.php -- 'id=19&url=http://bkjbezjnkelnkz.com'

Modifiez également votre script PHP pour utiliser parse_str () :

parse_str($argv[1]);

Si l'index $_SERVER['REMOTE_ADDR'] n'est pas défini.


Une gestion plus avancée peut nécessiter getopt () , mais parse_str () est un moyen rapide et efficace de le faire fonctionner.

31
Tino Didriksen

Vous ne pouvez pas passer les paramètres de requête GET à l'interface de ligne de commande PHP. Soit vous passez les arguments en tant qu'arguments de ligne de commande standard et utilisez le $argc et $argv globals pour les lire, ou (si vous devez utiliser les paramètres GET/POST) appeler le script via curl/wget et transmettre les paramètres de cette façon - en supposant que le script soit accessible via un serveur Web local.

Voici comment passer des arguments à lire par $argc et $argv (le - indique que tous les arguments suivants doivent aller dans le script et non dans l'interpréteur PHP binaire):

php myfile.php -- argument1 argument2

6
Patrick Cavanaugh

- 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:

php-cgi -f /my/script/file.php id=19 myvar=xyz

- 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:

wget 'http://localhost/my/script/file.php?id=19&myvar=xyz'

OU:

wget -q -O - "http://localhost/my/script/file.php?id=19&myvar=xyz"

- Accès aux variables en php -

Dans les deux options 1 et 2, vous accédez à ces paramètres comme ceci:

$id = $_GET["id"];
$myvar = $_GET["myvar"];
5
Bastion