91 votes

Passer une variable à un script PHP exécuté à partir de la ligne de commande

J'ai un fichier PHP qui doit être exécuté à partir de la ligne de commande (via crontab ). Je dois passer type=daily au fichier, mais je ne sais pas comment. J'ai essayé:

 php myfile.php?type=daily

mais cette erreur a été retournée :

Impossible d'ouvrir le fichier d'entrée : myfile.php?type=daily

Que puis-je faire?

77voto

ChrFin Points 8254

Il suffit de le passer en tant que paramètres normaux et d'y accéder en PHP en utilisant le tableau $argv

 php myfile.php daily

et dans monfichier.php

 $type = $argv[1];

24voto

fboes Points 1879

Ces lignes convertiront les arguments d'un appel CLI comme php myfile.php "type=daily&foo=bar" dans le tableau $_GET

 if (!empty($argv[1])) {
  parse_str($argv[1], $_GET);
}

Bien qu'il soit plutôt compliqué d'écraser le $_GET , il convertit rapidement tous vos scripts pour accepter les arguments CLI.

Voir parse_str pour plus de détails.

17voto

Rupesh Points 196

En utilisant la fonction getopt(), nous pouvons également lire un paramètre à partir de la ligne de commande uniquement. Transmettez une valeur avec la commande en cours d'exécution php

 php abc.php --name=xyz

Fichier abc.php

 $val = getopt(null, ["name:"]);
print_r($val); // Output: ['name' => 'xyz'];

6voto

Subdigger Points 1307

Paramètres envoyés par index comme les autres applications :

 php myfile.php type=daily

Et puis vous pouvez les obtenir comme ceci:

 <?php
    if (count($argv) == 0) 
        exit;

    foreach ($argv as $arg)
        echo $arg;
?>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X