Page 1 of 1

Cronjob Problem

Posted: 2008-02-26 10:15
by Anonymous
Hallo!
Ich habe ein großes Probl. mit dem einrichten von ein paar Jobs.
Über crontab -e richte ich wie folgt ein:

Code: Select all

0 10 * * * /var/www/w3/html/termine/test.php
Der Job sollte also um 10 Uhr die test.php ausführen (in test.php ist ein kleine Mailfunktion, die eine Testmail versendet)

Leider passiert überhaupt nichts. Auch wenn ich über

Code: Select all

0 10 * * * root /var/www/w3/html/termine/test.php
probiere -- nix.

vi /etc/crontab liefert folgendes:

Code: Select all

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
Wo kann der Fehler liegen bzw. was mach ich falsch?!?! Habe auch probiert der Datei test.php die Rechte auf 777 zu ändern... auch nix...
#-o

Vielen Dank für eine Idee!!

Re: Cronjob Problem

Posted: 2008-02-26 10:54
by Roger Wilco
Du musst die Datei entweder direkt mit dem PHP-Interpreter (cli Variante) aufrufen oder eine entsprechende She-Bang in die erste Zeile packen und das Skript ausführbar machen.

Re: Cronjob Problem

Posted: 2008-02-26 11:16
by Joe User
s/oder/und/

Re: Cronjob Problem

Posted: 2008-02-26 11:39
by Roger Wilco
Joe User wrote:s/oder/und/
Nö. Wenn die Datei direkt mit dem Interpreter aufgerufen wird (z. B. "/usr/bin/php /path/to/script.php") ist keine She-Bang nötig. Das gilt so auch für alle anderen Shellskripte.

Re: Cronjob Problem

Posted: 2008-02-26 12:32
by Joe User
ACK aber mit Shebang allein gibt es durchaus mal Probleme, weshalb ich grundsätzlich Beides angebe ;)

Re: Cronjob Problem

Posted: 2008-02-26 13:38
by oxygen
Ein "Problem" der Shebang Zeile ist aber, dass sie beim Aufruf über Apache oÄ nicht ignoriert wird. Das gibt sehr wahrscheinlich Probleme. Deswegen verzichte ich drauf.

Re: Cronjob Problem

Posted: 2008-02-27 00:06
by iberican
1. checken wo php läuft
2. z.b. /usr/bin/php -f /pfad/zum/skript/bam.php
wenn das nicht tut mal ./skript.php starten, dort wo sich das skript befindet

Re: Cronjob Problem

Posted: 2008-02-27 13:39
by Joe User
oxygen wrote:Ein "Problem" der Shebang Zeile ist aber, dass sie beim Aufruf über Apache oÄ nicht ignoriert wird. Das gibt sehr wahrscheinlich Probleme. Deswegen verzichte ich drauf.
Wer ruft denn Shellscripte per HTTP auf? Dafür gibt es das CGI ;)

Re: Cronjob Problem

Posted: 2008-02-28 08:05
by EdRoxter
Eine Shebang in einer PHP-Datei? Ja nee, is klar..

Mein Vorschlag:

Code: Select all

wget -O /dev/null http://dein.server/script.php
oder vergleichbare Alternativen.

Re: Cronjob Problem

Posted: 2008-02-28 08:50
by Joe User
EdRoxter wrote:Eine Shebang in einer PHP-Datei? Ja nee, is klar..
Funktioniert wunderbar:

Code: Select all

cat > shebang.php << "EOF"
#/usr/bin/php
<?php phpinfo(); ?>
EOF
chmod 0755 shebang.php
./shebang.php

Re: Cronjob Problem

Posted: 2008-02-28 09:17
by EdRoxter
Ist aber nicht unbedingt schön, IMHO. Nur durchaus interessant - ich hätte gedacht, dass der PHP-Parser mit ebenjener Shebang-Zeile ein Problem haben könnte.

Ich denke wohl zu fest in Webapplikationen und mod_php/suPHP. :)

Re: Cronjob Problem

Posted: 2008-02-28 10:28
by Roger Wilco
EdRoxter wrote:Ist aber nicht unbedingt schön, IMHO.
Wie gut, dass es für "schön" keine objektiven Maßstäbe gibt.

Ich finde bspw. dein Konstrukt mit wget unglaublich hässlich. Was machst du wenn der Webserver ausfällt? Was machst du, wenn alle Slots des Webservers belegt sind? Was machst du, wenn der Webserver fehlkonfiguriert ist und den Quellcode des Skripts ausliefert oder einen Fehler 404 ausgibt?
Die Variante über die Shell (mit der Shebang) ist wesentlich fehlerunanfälliger.
EdRoxter wrote:Nur durchaus interessant - ich hätte gedacht, dass der PHP-Parser mit ebenjener Shebang-Zeile ein Problem haben könnte.
Die bekommt der PHP Interpreter überhaupt nicht zu sehen. Die ist nur für die ausführende Shell interessant.
EdRoxter wrote:Ich denke wohl zu fest in Webapplikationen und mod_php/suPHP. :)
Ja, das tust du. PHP unterscheidet sich nicht wirklich von Perl, Python, Ruby oder einer anderen Skriptsprache.

Re: Cronjob Problem

Posted: 2008-02-28 12:25
by EdRoxter
Roger Wilco wrote:
EdRoxter wrote:Nur durchaus interessant - ich hätte gedacht, dass der PHP-Parser mit ebenjener Shebang-Zeile ein Problem haben könnte.
Die bekommt der PHP Interpreter überhaupt nicht zu sehen. Die ist nur für die ausführende Shell interessant.
Dann liege ich da wohl einer Fehlinformation auf. Ich war davon ausgegangen, dass die Shebang dem bezeichneten Interpreter sich selbst als Argument übergibt und mithin dann nochmal selbst interpretiert wird. Und da in PHP ja Kommentarzeilen üblicherweise nicht mit einer Raute beginnen... Aber gut, dann war das wohl mein Denkfehler.

Deine Einwände bezüglich wget sind auch absolut berechtigt.

Insofern: Mein Fehler. :)

Re: Cronjob Problem

Posted: 2008-02-28 18:18
by wgot
Hallo,
EdRoxter wrote:da in PHP ja Kommentarzeilen üblicherweise nicht mit einer Raute beginnen
PHP kennt auch die Raute als Kommentarzeilenkennung:
http://de.php.net/manual/de/language.ba ... mments.php
Gruß, Wolfgang

Re: Cronjob Problem

Posted: 2008-02-28 18:24
by EdRoxter
.. auch außerhalb der <? ?>-Marker? Das ist mir ja fast schon suspekt. ;)

Re: Cronjob Problem

Posted: 2008-02-28 19:13
by Joe User
EdRoxter wrote:.. auch außerhalb der <? ?>-Marker?
Dort sowieso, ist schliesslich kein PHP und wird daher vollständig ignoriert...