• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

PHP Cronjob bricht ab

zschneidi

Newbie
Hallo, hoffe hier bin ich damit richtig.

Ich habe derzeit ein Problem mit einen in PHP geschriebenen Script, das nachweislich 100% funktioniert.
Ich hatte dieses Script bereits seit einiger zeit auf unseren altem Server laufen, da klappte das wunderbar.

Wir sind jetzt mit teilen auf einen anderen Server umgezogen, darunter auch dieses Script.

Mein Problem stellt sich jetzt so vor, dass wenn ich es über den Cron ausführen lassen will, das Script aus nicht
erkenntlichem Grund aussteigt. Es läuft zwar zum teil bis zu einer bestimmten PHP funktion aber bricht dann ab.

Das Script läuft definitiv auch auf dem jetzigen Server, wenn ich das PHP script manuell ausführe läuft alles wunderbar.
Nur über den Cron geht es nicht.

Hatt da jemand eine Idee, was da jetzt noch schiefgehen kann ?

Ich lasse das Script als root ausführen, die Berechtigungen scheinen kein Problem zu sein.
Der Ausstieg geschieht soweit ich es zurückverfolgen konnte bei der PHP funktion imagecreatetruecolor();
Die macht aber nur beim Aufruf über den Cron probleme.

Ich habe da derzeit keine Ahnung wo das problem liegen soll. Hoffe deshalb auf eure Tips ;)
 

panamajo

Guru
zschneidi schrieb:
[...]
Wir sind jetzt mit teilen auf einen anderen Server umgezogen, darunter auch dieses Script.

[...]

Das Script läuft definitiv auch auf dem jetzigen Server, wenn ich das PHP script manuell ausführe läuft alles wunderbar.
Nur über den Cron geht es nicht.

[...]

Der Ausstieg geschieht soweit ich es zurückverfolgen konnte bei der PHP funktion imagecreatetruecolor();
Die macht aber nur beim Aufruf über den Cron probleme.
1) Wenn ich das richtig verstehe verwendest du PHP CLI, d.h. du hast einen Eintrag in der crontab der so aussieht:
Code:
0 1 * * *   /usr/bin/php -f das/php/script.php
korrekt?
2) Cron schickt normalerweise eine Mail wenn ein Skript bei der Ausführung irgendwas ausgibt, da dürfte dann auch die genaue Fehlermeldung drinstehen. Wie lautet die?
3) Das Environment unter cron ist ein anderes, vllt. passen einfach die Pfade nicht mehr?
 
OP
Z

zschneidi

Newbie
Mein Cron eintrag sieht folgendermaßen aus:

05 12 * * * root /pfad/zum/script/cron_generator.php -d >> /home/me/script-log 2>&1

Etwas abgewandelt natürlich ^^

In der form lief das Script bisher auch auf dem alten Server ohne probleme.
2)
Die mail die ich dazu immer bekomme enthällt keinerlei Fehlermeldungen sie bleibt an der stelle, wo nichts kommt einfach nur leer.

Evtl. sollte ich mich berichtigen, das Script bricht nicht mal direkt ab, sondern nur die einzelnen durchläufe steigen aus.
Ich iteriere über mehrere Positionen, wenn eine aussteigt, wird mit der nächsten fortgefahren, nur dass ich für die einzelnen Positionen keine
Ergebnisse bekomme.

3)
Das Environment ist klar, darauf hin habe ich das Script ja designt, dass es sowohl über cron als aus über manuellen Aufruf funktioniert.
Wie gesagt, das Script selbst hat sich bereits bewehrt, das funktioniert 100% auch im Cron lief das bereits eine ganze weile.

Nur eben auf dem Neuen Server nicht mehr.
 

panamajo

Guru
zschneidi schrieb:
Mein Cron eintrag sieht folgendermaßen aus:

05 12 * * * root /pfad/zum/script/cron_generator.php -d >> /home/me/script-log 2>&1
Abgesehen davon dass man nie /etc/crontab ändern sondern (auch und gerade als root) crontab -e zum editieren verwenden sollte soweit ok.
zschneidi schrieb:
Evtl. sollte ich mich berichtigen, das Script bricht nicht mal direkt ab, sondern nur die einzelnen durchläufe steigen aus.
Ich iteriere über mehrere Positionen, wenn eine aussteigt, wird mit der nächsten fortgefahren, nur dass ich für die einzelnen Positionen keine Ergebnisse bekomme.
Da wirst du um erweitertes Logging/Debugging nicht herum kommen.
zschneidi schrieb:
Das Environment ist klar, darauf hin habe ich das Script ja designt, dass es sowohl über cron als aus über manuellen Aufruf funktioniert.
Wie gesagt, das Script selbst hat sich bereits bewehrt, das funktioniert 100% auch im Cron lief das bereits eine ganze weile.

Nur eben auf dem Neuen Server nicht mehr.
Dann wird auf dem neuen eben irgendwas anders sein, was das Skript bisher nicht beachtete.
 
OP
Z

zschneidi

Newbie
Ich hab schon soweit alles debuggt, was möglich war eben bis hin zu dieser einen Funktion, die den Abbruch verursacht, da kann ich nur kaum weiter rein gehen,
da diese eben in PHP selbst enthalten ist. Und diese Funktion funktioniert ja auch, bei manuellem Aufruf.

Du meinst also, dass der Fehler nicht zwingen beim Cron liegen muss ?
Wie gesagt, das Script selbst läuft tadellos auf dem Server, nur über den Cron nicht, da bin ich mit meinem Wissen doch am Ende, was das noch verursachen kann.
Wäre es ein simpler Fehler im Script selbst, hätte ich diesen schon längst beim Debuggen gefunden, das wäre in den meisten Fällen auch am wahrscheinlichsten.

Ich hatte das schon mit nem Kollegen/Admin besprochen, der hat dazu auch keine Idee weiter.
Ich werde nochmal sehen, ob möglicherweise Pfade jetzt anders vorliegen, als bisher.

Falls trotzdem noch jemand ne Idee hat, immer raus damit.
 
Ich nutze bei Problemen dieser Art immer strace
Code:
 05 12 * * * root strace -f  -o /tmp/phpstrace.log /pfad/zum/script/cron_generator.php -d >> /home/me/script-log 2>&1
Damit kannst Du eventuell sehen, bei welchen Systemcalls Probleme da sind.
Mit etwas Skript (pid ausblenden), kann man auch die Ausgaben von einer
strace-Session ausserhalb von cron mit einer cron-Session vergleichen.

Haveaniceday
 
OP
Z

zschneidi

Newbie
Zur Info noch. Das Problem hat sich anscheinend von selbst gelöst.

Ich hatte das erstmal gelassen, da noch anders zu tun war und siehe da n Tag später lief das einfach wieder.
Wir können uns das jetzt auch nicht ganz erklären, warum es einfach mal nen paar tage nicht lief.

Aber Hauptsache geht wieder.
 
Oben