GNU/Linux >> Tutoriels Linux >  >> Linux

Passer les paramètres $_GET à la tâche cron

Pas une réponse directe à votre question mais une meilleure solution je pense :

Si vous voulez que personne d'autre que cron n'exécute le script, placez-le simplement en dehors de la racine Web. De cette façon, il n'y a aucun accès via le serveur Web.

Si vous devez également exécuter la commande en tant qu'utilisateur spécial, n'utilisez pas GET mais ayez une connexion utilisateur et recherchez une session connectée (une certaine variable de session définie...) et incluez le script dans cette page uniquement.

Votre script accessible au public ressemblerait à :

session_start();

if (isset($_SESSION['user']))
{
  include '/path/to/script/outside/of/web-root';
}
else
{
  die('No access.');
}

Le $_GET[] &$_POST[] les tableaux associatifs ne sont initialisés que lorsque votre script est appelé via un serveur Web. Lorsqu'il est invoqué via la ligne de commande, les paramètres sont passés dans le $argv tableau, tout comme C.

Contient un tableau de tous les arguments passés au script lors de l'exécution à partir de la ligne de commande.

Votre commande serait :

* 3 * * * /path_to_script/cronjob.php username=test password=test code=1234 

Vous utiliserez alors parse_str() pour définir et accéder aux paramètres :

<?php

var_dump($argv);

/*
array(4) {
  [0]=>
  string(27) "/path_to_script/cronjob.php"
  [1]=>
  string(13) "username=test"
  [2]=>
  string(13) "password=test"
  [3]=>
  string(9) "code=1234"
}
*/

parse_str($argv[3], $params);

echo $params['code']; // 1234

Linux
  1. Comment créer un script d'une commande Linux

  2. Comment exécuter `date` à l'intérieur d'un travail d'onglet Cron ?

  3. jobs Options de commande sous Linux

  4. nohup :commande introuvable

  5. PHP passant $_GET dans l'invite de commande Linux

Comment configurer une tâche Cron sous Linux

La tâche Cron ne s'exécute pas ?

Ma tâche Cron ne fonctionne pas

Comment exécuter une commande dans un script shell ?

Passer des variables dans la commande ssh distante

Exécution d'une tâche cron sous Linux toutes les six heures