Drupal cron job nem fut le

A jelenlegi drupal adatbazisomon nem fut le a drupal cron job. A futas helyett feldob egy letoltes ablakot a "run-cron.txt" filera. Itt mindegy, hogy mit csinalok (open, save, ...) a cron job nem fut le.

Kiprobaltam egy "ures" adatbazison egy azonos drupal verziot, illetve a hibas adatbazison tobb drupal verziot is a jelenseg ugyanaz.
Megprobaltam a drupal admin felulet alol a cachet torolni, egyelore nem segitett.
Turtam a netet, hogy milyen cache tablak vannak meg, azokat toroltem phpmyadminbol, de az sem segitett.

Tud valaki megoldast?

Hozzászólások

Azt nem wgettel kene leszedni cronbol?

Vagy mi a fenet keres egy cron job egy bongeszoben?

Hanyas verziójú drupal? Mert pl. a 7-es már automatikusan bizonyos idő után egy-egy kérésbe beszúrja a cron futtatást.

Abban a könyvtárban, ahol a cron job van, van futtatási jog? A file-ra van engedélyezve a futtatás? Kinek a nevében futtatnád a cron-t?

A helyzet az, hogy ha csinalok egy vadonatuj installaciot egy szuz adatbazist, akkor minden megy ragyogoan. Ha beimportalom a regi adatbazist ugyanebbe az installacioba, akkor a cron nem fut le tobbe. A filerendszerben nincs valtozas. Tehat nem valoszinu, hogy jogosultsagi problema. Egyekent ha az lenne, akkor permission denied jellegu hibauzenet erkezne.

"Abban a könyvtárban, ahol a cron job van, van futtatási jog?"

Igen

"A file-ra van engedélyezve a futtatás?"

Nem volt, de nem valtoztat a dolgon. Ahol mukodik, ott mukodik anelkul is, ahol nem mukodik, ott nem megy azzal sem.

"Kinek a nevében futtatnád a cron-t?"

A host felhasznalom neveben, feltehetoleg.

Esetleg probald meg drush-on keresztul futtatni. Az a tool egyebkent masra is hasznos, erdemes megnezni. :)

Adatbázisban töröld a cron_semaphore-t. Ez szokott segíteni beragadt cron feladatoknál.

delete from variable where name = 'cron_semaphore';

cron_semaphore nem volt egyik serult adatbazis variable tablajaban sem (sem a 6-sban, se a 7-eseb importaltabn), viszont a 7-es altal ltrehozott szuz adatbazisban a variable tablaban van egy cron_key meg egy cron_last, de cron_semaphore ott sincs. Gondolom ez egy atmenetileg letrehozott valtozo a cron futas idejere.

Felrakod az XDebug-ot, beraksz a cron-fajl elejere egy trace requestet, leszeded wgettel, elolvasod a trace fajlt, orulsz (vagy sirsz...)

A problemat egy php oldal okozza (ide kikommentezve teszem be):


<?php
/*
    $file = $_GET['file'];
    $filePathName = $_SERVER['DOCUMENT_ROOT'] . $_GET['path'] . $file;
    $mime = $_GET['mime'];
    header ("Content-type: $mime");
    header ("Content-disposition: attachment; filename=".$file.";");
    header("Content-Length: ".filesize($filePathName));
    readfile($filePathName);
    exit;
*/
?>

Ezt nem tudja felindexelni.

Ezt a kodreszletet arra talaltam korabban megoldaskent, hogy kikenyszeritsem a bongeszobol letolteskor a mentes/megnyitas abalakot. Ugyanis ha barmilyen allomanyt tolt le a felhasznalo, akkor az minden bongeszonel mashogy tud vislekedni pl. attol fuggoen, hogy van e beagyazodo applikacio az adott tartalomhoz, stb.
Ha az allomany nagyobb, a felhasznalo gyakran elkattint, mert azt hiszi, hogy nem tortenik semmi, mikozben a browser csendebn a hatterben tolt.

Szoval vagy a cron temat tekintem megoldottnak, de akkor a bongeszoablak megnyitas nem mukodik es akkor nyithatok egy uj temat a bongeszoablak probelamanak, vagy pedig sikerul olyan php kodot irni, amit fel tud indexelni a cron.

Oteltek?

Valaki legyen oly' kedves elmagyarazni, hogy az elso mondatnak mi a jelentese. Tudtommal a Drupal nem PHP oldalakat indexel, hanem a sajat adatbazisaban gyujtoget. De lehet, hogy tevedek, viszont erdekelne, hogy ez akkor hogy mukodik.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal 

Nem tuidom, hogy mennyire fogalmaztam pontosan. A lenyeg, hogy amikor a drupalban oldalt hozol letre, akkor az egyik lehetseges tipus a php (a htaml es szukitett html mellett). A mondat pedig azt jelenti, hogy a php tartalmu oldalak eseteben nem a php kod kerul szovegkent felindexelesre, hanem a kod altal generalt html oldal.

A PHP filtert minden jo erzesu ember nagyon-nagyon-nagyon messzirol keruli, es modulszinten kapcsolja ki. Csak nagyon-nagyon ellenorzott korulmenyek kozott szabad hasznalni - es akkor is nyolcvanotszor meg kell fontolni, hogy tenyleg kell-e ez, nem lenne-e jobb modult gyartani ra.

Roviden: A PHP filter rossz, ertem?
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal 

Ezek szerint nem vagyok jo erzesu ember. En egy szimpla weboldalt akarok osszerakni drupallal, es abban ket helyen is kell egy par sornyi php kod. (Ja PHP kod azert kell, mert az egesz webes technologia egy rakas ..., raadasul minden bongeszo mashogy viselkedik,) Ehhez irjak modult? Miben jobb a modul, mintha a php filteren megy at? Azzal, hogy a php kod nem az adatbazisban lakik? Hat miert nem oldjak meg rendszer szinten, hogy ne ott lakjon. Egyelore nem latom, hogy miert nem (keret)rendszer szinten van a php problema kezelve, miert is kell nehany sor php kodhoz modult gyartani, es azt allandoan karbantartani, az upgradekkel elvezni, stb.

Ha elmondod, miert kell a PHP kod, es nem csak felhaborodottan vagdalkozol, akkor lehet, hogy meg segiteni is tudunk.

A PHP filter egyebkent azert nem jo dolog, mert nagyon sokmindenre kihatassal lehet. Egy modul sokkal specifikusabb, sokkal finomabb eszkoz, mint egy node-ba/blockba beszurt PHP kod. Kicsit a kobalta meg a precizios furo esete, mindkettovel celt lehet erni, csak az elobbivel tobb kart csinalsz kozben.

A custom modulokat nem kell upgradelni. A Drupal API csak foverzionkent valtozik nagyot, de akkor amugy is olyan melyrehato valtozasok vannak, hogy az, hogy egy egyfuggvenyes modult frissiteni kell, eltorpul amellett, amennyi munka egyebkent van vele. De egy foverzion belul az API-k 99%-a egyaltalan nem valtozik (legfeljebb bovul).
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal 

Azt még tegyük hozzá, hogy egy ilyen node-ba írt PHP gányolással sok dolgot nem lehet kihasználni a Drupal funkciói közül. Illetve ha valami miatt hiba kerül bele (pl. PHP frissítés, elírt függvénynév), akkor törik az egész oldal és lehet az adatbázisban pucolgatni.
A PHP filter nem azért van, hogy ott programozzunk, ez igenis megerőszakolása a rendszernek. Na de majd mindjárt jön a témaindító és megmagyarázza, hogy ő márpedig ért a Drupalhoz és így kell ezt.

-----
"Egy jó kapcsolatban a társunkat az ő dolgában kell támogatni, nem a miénkben."
rand() a lelke mindennek! :)

Nem vagdalkozom, csak a kerdesfelvetesemre vicces modon lecseszesek jonnek. Nekem a webprogramozas nem szakteruletem, ezert probalok egy kesz keretrendszert alkalmazni, hogy az eletem egyszerubb legyen. Az akkor miert csinalod kerdeseket megelozendo: egy non-profit oldalrol van szo, amit ingyen szeretetbol (es rohadt keves idobol) csinalok, es nincs mas, aki csinalna.

Szoval a PHP reszek:
Az egyik problema ez: http://hup.hu/node/114266#comment-1455895
A masik, amire php-t hasznalok az egy tablazat generalasa.
Es talan van meg egy, ahol egy automatikus mailt kuldok.

"az inputok ellenőrzése nem "jobbat tudás", hanem az abszolút minimum."

Igen lehetne, nem igazan gondoltam ra. (Nem foglalkozom alapvetoleg webes programozassal, csak kenyszerbol naha, es nem gondoltam ra, hogy ez egy tamadasi felulet.) Az inputok ellenorzese egyebkent szerintem tervezesi es nem kodolasi kerdes, ez pedig egy "quick and dirty" dolog, ahol mukodes szempontjabol minden input elfogadhato. De ertem a problemat es koszonom, hogy felhivtad ra a figyelmem. A tudsz jobbat pedig a megoldasra ertettem, de tenylegesen egy input szuressel valoszinuleg az is megoldhato, hogy a cron lefusson. Majd este megnezem.

"$file = $_GET['file'] ennek mi értelme van - azon kívül h szaporítod a változókat?"

Ket helyen van hsznalva, de mondjuk tenyleg nem letszukseg, hogy valtozoban legyen. En egyebkent inkabb hasznalok valtozokat, mint tobbszoros vagy egymasba agyazott hivasokat. De nem vagyok a PHP nagy muveloje, csak muszajbol hasznalom neha neha, tehat nem feltelenul hasznalom optimalisan.

Eloszor is, ez a PHP kod hogyan fut? Valahogy mindenki nagyon okosnak latszik itten, pedig te nem irtal le semmi konkretumot. En meg valahogy hulyenek erzem magam, pedig nagyon szivesen segitenek.

Egyfelol a Drupal kepes a letoltesek kezelesere, PHP-n atszurve a dolgokat, a 'drupal private filesystem' kulcsszavakra keress ra (aposztrofok nelkul). Sztem erre a mokolasra szukseg nincsen.
Masfelol pedig sztem a webszerveren is ki lehetne eroszakolni egy ilyen header elkuldeset adott fajlok eseteben. De meg az sem lehetetlen, hogy van ilyen Drupal modul, csak te meg nem tudsz rola.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal 

> Egyfelol a Drupal kepes a letoltesek kezelesere

Fent leirtam a kulonbozo bongeszokkel tapasztalt jelensegeket.

> drupal private filesystem

Ez hogyan tudna segiteni a probleman?

> Masfelol pedig sztem a webszerveren is ki lehetne eroszakolni egy ilyen header elkuldeset adott fajlok eseteben.

Hogyan?

> De meg az sem lehetetlen, hogy van ilyen Drupal modul, csak te meg nem tudsz rola.

A forumokat bongeszve mas sem. Ettol meg lehet, hogy letezik.

A feladat az, hogy bizonyos allomanyok letolthetoek legyenek egy html oldalba agyazott linkre kattintva. Korabban ezt egyszeruen ugy oldottam meg, hogy a drupal belso relativ linkjet tettem be az anchor tagbe. (pl. /files/vmi/vmi2/vmi3.pdf) Ennek az volt az eredmenye, hogy a bongeszok kulonfelekeppen kezeltek a letoltest. Van amelyik nyitott abalakot, van amelyik a hatterben toltott. Ez nyilvan egy nehany MBs allomanynal mar probelmas lehet, mert egy csomo user elkattint, hogy hat ez nem is mukodik, nem tortenik semmi. Ennek kikuszobolesere akarom kikenyszeriteni, hogy a letoltes ablak mindig azonnal megyniljon, amint a user a linkre kattint.

A topic cim pont megfelel, bar a problemam kicsit eltero. D7 alatt a cron jobok nem futnak le, ha kivulrol probalom futtatni curl-lal, csak ha drush-sal futtatom oket. Bar a D7 alapbol tartalmaz egy poorman's cron implementaciot, azert en megis jobban orulnek, ha ez a mod mukodne.

Sikerult mar vkinek mukodesre birnia? A cron_key-t meg szoktam adni, ezzel egyutt sem megy, es nem tudom, milyen jog kellene hozza.

A hibajelenseg: egy teljesen renderelt (sminkelt) drupal-os "Hozzaferes megtagadva" oldalt kapok.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal