Autor | Zpráva | ||
---|---|---|---|
luma64 Profil |
#1 · Zasláno: 26. 9. 2019, 11:04:50
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 |
#2 · Zasláno: 26. 9. 2019, 11:50:40
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 * |
#3 · Zasláno: 26. 9. 2019, 12:15:28
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 |
||
Časová prodleva: 5 let
|
0