[CronJob] wird nicht ausgeführt

Coach

Aktives Mitglied
Hallo,

ich habe folgenden Aufbau der Crontabelle:

Mailto=XXX
1 0 * * * /usr/local/psa/bin/run-parts.sh /etc/psa/plesk-cron.daily
32 6 * * 7 /usr/local/psa/bin/run-parts.sh /etc/psa/plesk-cron.weekly
4 2 1 * * /usr/local/psa/bin/run-parts.sh /etc/psa/plesk-cron.monthly
5,20,35,50 * * * * /usr/local/psa/admin/sbin/backupmng >/dev/null 2>&1

1 0 * * * /srv/www/vhosts/test.suelzparty.com/httpdocs/cron/execute_daily.php
32 6 * * 7 /srv/www/vhosts/test.suelzparty.com/httpdocs/cron/execute_weekly.php
*/5 * * * * /srv/www/vhosts/test.suelzparty.com/httpdocs/cron/execute_5_minutes.php
0 2 1 * * /srv/www/vhosts/test.suelzparty.com/httpdocs/cron/execute_monthly.hhp

jetzt erwarte ich, dass die unteren 4 Jobs ausgeführt werden. diese werden anscheinend auch ausgeführt, jedoch mit folgenden Fehlern:

/srv/www/vhosts/XXX/httpdocs/cron/execute_monthly.php: line 1: ?php: No such file or directory
/srv/www/vhosts/XXX/httpdocs/cron/execute_monthly.php: line 2: syntax error near unexpected token `"db_connect.inc.php"'
/srv/www/vhosts/XXX/httpdocs/cron/execute_monthly.php: line 2: `include_once("db_connect.inc.php");'

Kann mir jemand erklären, woran das liegt?
 
QUOTE (Coach @ Fr 8.08.2008, 11:57) srv/www/vhosts/XXX/httpdocs/cron/execute_monthly.php: line 1: ?php: No such file or directory

Sagt doch eigentlich genug aus oder?

Die Scripts müssen entweder manuell durch den PHP-Intepreter geschleust werden, oder dann halt eben in den "Batchs" selbst auf das korrekte PHP-binary verweisen.

Könnte dann sop aussehen:
1 0 * * * /usr/bin/php /srv/www/vhosts/test.suelzparty.com/httpdocs/cron/execute_daily.php



Alles andere sind mit Sicherheit Folgefehler
 
Also wenn ich nicht falsch liege, sieht es so aus als ob Du nur den Pfad zur Datei angibst, das reicht soweit ich meine aber nicht...

Du musst entweder die Datei mit per php aufrufen :
z.B. : /usr/bin/php /home/www/deinscript.php

oder mit

z.B. wget http://www.deineurl.de/deinscript.php

korrigiert mich wenn ich falsch liege ;-)

Wenn Du nur "/srv/www/vhosts/test.suelzparty.com/httpdocs/cron/execute_daily.php" in die shell eingibst, bekommste doch wahrscheinlich den gleichen Fehler oder ?
 
In der Regel liegt das daran, dass der Interpreter nicht definiert wurde.
Plesk oder? Rechte event. auch mal überprüfen.

Gruss Marc

Edit: Da waren einige schneller als ich
huh.gif



QUOTE oder mit

z.B. wget http://www.deineurl.de/deinscript.php


Runterladen ist nicht gleich ausführen
wink.gif
 
na ja, aber hat es irgendwelche großen Nachteile ?

Zumindest liest man diese methode auch oft und dann halt die Ausgabe ins Nirvana umleiten.

So wird die Datei ausgeführt als ob man mit einem Browser die Datei abruft, wenn man es per php Interpreter macht kann es schon vorkommen, das er Pfadangaben bemekert wenn man ala include('xx.php') noch eine Datei eingebunden hat und sich nicht im richtigen Ordner befindet.

..oder liege ich falsch ?
 
Die Pfade auf dem Filesystem sind in beiden Fällen identisch ;-)

Hauptunterschied ist, dass du bei wget einerseits absichern musst dass niemand sonst die Scripts aufrufen kann, und andererseits hast du so immer einen Output aus dem Cron, was eigentlich idR. nicht erwünscht ist.
 
ok, danke euch.. dann probier ichs mit /usr/bin/php
danke euch allen für die schnelle hilfe :)
 
@Alonso :

Klar die Pfade beliben gleich.. was ich meinte wenn du mit include('../xx.php') einbindest, kann es sein das die Datei nicht gefunden wird. weil der Interpreter ja von seinem Verzeichnis aufgerufen wird /usr/bin/php und er die Dateien dann nicht findet, wenn man nicht vorher per z.B. cd in das web home Verzeichniss gewechselt ist.
(Ich hoffe ich habe verständlich ausgedrückt was ich meine
biggrin.gif
)

Ein Freund von mir hatte zumindest das Problem mal und bei seinem Provider war das auch so beschrieben.


Gut in den fällen die ich bis jetzt hatte, machte es nichts, wenn jemand anders die scripte auch aufgerufen hätte, ist aber natürlich ein sehr guter Einwand ;-)
Die Ausgabe kann man doch aber unterdrücken bei wget, von daher wäre es doch kein Problem oder ?!
 
Das mit den Pfaden anpassen sollte aber noch ein überblickbarer Aufwand sein
wink.gif


Wget ist vom Prinzip her ein Offlinereader, und hat daher nach meiner Meinung nichts in einem Cronjob zum starten von Scripts zu suchen. Damit hast du auch kaum Kontrolle was nun passiert, und ob der Job erfolgreich war..

Für PHP-Batchs (wenns denn sein muss) gäbs übrigens das PHP-CLI (command line interface)
 
Zurück
Oben