Néhány "Undefined index: XYZ in ..." PHP notice IIS php-cgi.exe + Task Scheduler használata esetén

Sk8erPeter képe

Sziasztok!

Előre is elnézést, ez inkább szerver működésével és PHP-vel kapcsolatos kérdés, de mégis Drupalhoz kapcsolódik, és azért teszem fel itt a kérdést, mert esélyes, hogy már találkoztatok hasonló problémával, és itt elég sok a guru.

IIS-t használok Windows Server 2008 alatt FastCGI PHP-vel.
A Drupal jól és gyorsan működik a szerveren.
Beállítottam a Task Schedulert a cron.php bizonyos időközönkénti futtatására, mert fontos, hogy az ütemezett feladatok akkor is lefussanak, amikor épp nem böngészik az oldalt.

A php-cgi.exe megfelelő elérési útvonalának beállítását az Actions fülön elvégeztem, argumentumként a cron.php-t adom át neki, a "Start in" résznél pedig ahogy kell, beállítottam a Drupal elérési útvonalát.
Az ütemezés le is fut, DE hibásan, mert notice-okat kapok (a PHP logjában látom őket), amik arról számolnak be, hogy egyes szerverváltozók nincsenek beállítva. Kiemelve a lényeget egy cron lefuttatásakor:

PHP Notice:  Undefined index: SCRIPT_NAME in C:\[Drupal-útvonalam]\includes\bootstrap.inc on line 327
PHP Notice:  Undefined index: SCRIPT_FILENAME in C:\[Drupal-útvonalam]\includes\bootstrap.inc on line 327
PHP Notice:  Undefined index: SCRIPT_NAME in C:\[Drupal-útvonalam]\includes\bootstrap.inc on line 425
PHP Notice:  Undefined index: REMOTE_ADDR in C:\[Drupal-útvonalam]\includes\bootstrap.inc on line 1317
PHP Notice:  Undefined index: REMOTE_ADDR in C:\[Drupal-útvonalam]\includes\bootstrap.inc on line 1317

Ezt találtam hasonló témában, csak nginx szerverrel kapcsolatban: [link]
"You have configured your nginx server incorrectly, and it is not passing the correct FastCGI parameters."

Rendben, mi nincs konfigurálva, és miért van az, hogy a Drupal böngészőn keresztüli futásakor nem tapasztalok hasonló problémákat, és a PHP logban nincsenek hasonló problémák?

Előre is köszi, és bocs még egyszer az OFF-ért.

Drupal verzió: 
nevergone képe

Szomorú leszel, ugyanis úgy tűnik, rosszul hívod meg a cron.php-t.
Vagy Drush kell neked. Segíthet még ez: http://drupal.hu/kezikonyv/telepites/simitasok és ez: http://drupal.org/node/23714

Vagyis nem a cron.php-t kell futatnod a PHP értelmezővel, hanem oldalletöltést kell végezned (ekkor állítódnak be a szükséges változók) az oldalad webcímén keresztül. Pl. egy időszakosan meghívott „wget” parancs sokat segíthet.

1
0
Sk8erPeter képe

Köszi a választ!
Basszus, igazából nem is értem, miért nem jutott korábban eszembe, hogy ha nem webszerveren keresztül futtatom, nyilván nem állítódnak be az említett változók... (nem láttam a fától az erdőt) Teljesen jogos!
A cURL-nek is van Windows-os binary-je, ez ilyen "letöltöd-kibontod-működik" változat, úgyhogy az kézenfekvőnek tűnik, hogy mondjuk beteszem a cURL-t PATH-ba, majd egy batch-fájlban az összes szükséges cron-fájlt meghívom valahogy így:

curl example.com/cron.php>NUL
curl another.example.com/cron.php>NUL
........

(NUL-ra azért irányítom az stdout-ot, mert így ha valamelyik cron-fájl esetén nincs elnyomva a PHP-s hibajelzés, vagy bármiféle kiíratás, akkor is felesleges, hogy kiírjon bármit, ha már feladat-ütemezőn keresztül futtatom [vagy akkor már értelmes lehet logfájlba íratni])
És ezt az egy batch-fájlt rakom feladat-ütemezőbe.

Köszi még egyszer az útbaigazítást!

0
0