GNU/Linux >> Znalost Linux >  >> Linux

Předávání parametrů $_GET do úlohy cron

Není to přímá odpověď na vaši otázku, ale myslím, že lepší řešení:

Pokud chcete, aby skript spouštěl nikdo kromě cronu, umístěte jej mimo webový kořenový adresář. Tímto způsobem neexistuje vůbec žádný přístup přes webový server.

Pokud potřebujete spustit příkaz také jako speciální uživatel, nepoužívejte GET ale mějte přihlašovací jméno uživatele a zkontrolujte, zda nemáte přihlášenou relaci (určitá nastavená proměnná relace...) a zahrňte skript pouze na tuto stránku.

Váš veřejně přístupný skript by vypadal nějak takto:

session_start();

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

$_GET[] &$_POST[] asociativní pole se inicializují pouze tehdy, když je váš skript vyvolán přes webový server. Při vyvolání přes příkazový řádek jsou parametry předány v $argv pole, stejně jako C.

Obsahuje pole všech argumentů předávaných skriptu při spuštění z příkazového řádku.

Váš příkaz by byl:

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

Pak byste použili parse_str() k nastavení a přístupu k parametrům:

<?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. Jak vytvořit skript příkazu Linux

  2. [VYŘEŠENO] Cron úloha wget zapisuje soubory do kořenového adresáře

  3. Jak provést „datum“ uvnitř úlohy Cron Tab?

  1. Předávání více parametrů přes Xargs?

  2. Úloha Cron zkontrolovat, zda skript PHP běží, pokud ne, pak spustit?

  3. Můj Cron Job nefunguje

  1. jobs Možnosti příkazů V Linuxu

  2. Předávání proměnných ve vzdáleném příkazu ssh

  3. PHP předá $_GET v příkazovém řádku linuxu