GNU/Linux >> Linux Esercitazione >  >> Linux

Passaggio dei parametri $_GET al cron job

Non è una risposta diretta alla tua domanda, ma penso che sia una soluzione migliore:

Se vuoi che nessuno tranne cron esegua lo script, posizionalo fuori dalla web-root. In questo modo non c'è alcun accesso tramite il server web.

Se devi eseguire il comando anche come utente speciale, non utilizzare GET ma avere un login utente e verificare la presenza di una sessione di accesso (una certa variabile di sessione impostata...) e includere lo script solo in quella pagina.

Il tuo script pubblicamente accessibile sarebbe simile a:

session_start();

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

L'$_GET[] &$_POST[] gli array associativi vengono inizializzati solo quando lo script viene richiamato tramite un server web. Quando vengono richiamati tramite la riga di comando, i parametri vengono passati nel $argv array, proprio come C.

Contiene un array di tutti gli argomenti passati allo script durante l'esecuzione dalla riga di comando.

Il tuo comando sarebbe:

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

Dovresti quindi utilizzare parse_str() per impostare e accedere ai parametri:

<?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. Passare più parametri tramite Xargs?

  2. Cron Job per verificare se lo script PHP è in esecuzione, in caso contrario eseguito?

  3. nohup:comando non trovato

  4. Prova un cron job settimanale

  5. Quale fuso orario utilizza un cron job?

Come impostare un Cron Job in Linux

[RISOLTO] Cron job wget scrive i file nella directory principale

Utilizzo di uno script Cron Wrapper

Come eseguire `date` all'interno di un processo Cron Tab?

Il mio Cron Job non funziona

Come eseguire un comando in uno script della shell?