Autor Zpráva
luma64
Profil
Pozdravujem ! Cez crontab sa spúšťa job, ktorý spracuje php kód na web serveri a výsledný súbor umiestni do špecifikovaného adresára. Chcem sa poistiť, či spomenutý adresár existuje; ak áno, nech údaje spracuje, ak nie, nech ukončí spracovanie. V kóde som dal otestovať výpis, či taká cesta existuje. Keď spustím kód manuálne, pod užívateľom web servera, všetko sa vykoná správne. Akonáhle ten istý kód spustí uživateľ z cronu - kód zbehne. Keď však dám podmienku, aby sa kód vykonal, ak existuje cesta k cieľovému adresáru, táto podľa neho neexistuje, kód sa ukončí.

$root =  $_SERVER['HTTP_HOST'];
$ulozisko = "";
if ( $root == 'localhost')
{
    //Ulozisko ma lokalnom pc*/
    $ulozisko = "exporty_rz/";
    $ulozisko_archiv = "exporty_rz_archiv/";
}
if ( $root == '192.nieco.nieco.nieco)
{
    //Ulozisko na serveri
    $ulozisko = '/var/www/html/exporty/';
    $ulozisko_archiv = '/var/www/html/exporty_archiv/';
}

if ( empty ($ulozisko) || $ulozisko == "")
{
    $echo "Pre export udajov pre Avis nie je rozpoznane ulozisko";
    exit;
}

Dal som si počas spracovania jobu z crontabu php skriptom vypísať hodnoty HTTP_HOST, DOCUMENT_ROOT, SERVER_NAME, SERVER_ADDR, PATH_INFO, ORIG_PATH_INFO, HTTP_REFERER, HTTP_USER_AGENT zo servera ale všetky boli prázdne. Ako pls spracovať informácie a získať hodnoty servera, keď je kód spúšťaný užívateľom jobu v crontabe ?
Tomášeek
Profil
luma64:
CRONové scripty neběží skrze HTTP, proto tato proměnná (resp. pole SERVER) je prázdné.

Buď na serveru spouštěj s parametrem a testuj ten parametr (čili něco jako if (isset($param) {... server} else {'localhost'}), nebo po odtestování tu podmínku zahoď a pracuj s tím, že jsi na serveru a spouštěn cronem, což bude splněno vždy.
N71
Profil *
To pole SERVER není úplně prázdné, jsou v něm lokální proměnné uživatele systému. Něco z toho možná půjde použít, minimálně tam najdeš celou cestu ke spuštěnému souboru.
Keeehi
Profil
Druhá možnost je si ten script spustit skrz webserver i z cronu.
curl --silent http://domain.com/script.php

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0