| 

.NET C# Java Javascript Exception

3
Hallo,

ich habe ein PHP Skript, dass über die PHP exec-Funktion

exec('/usr/bin/php /srv/www/vhosts/domain.de/httpdocs/cron2.php');


weitere PHP Skripte starten soll.

Dieses Skript wird über cron aufgerufen:

*/15    *       *       *       *       /usr/bin/php /opt/scripts/cron1.php > /dev/null 2>&1


Ich habe das Problem, dass das Skript einwandfrei funktioniert, sofern ich es direkt über die Shell (SUSE 12.1) mit

/usr/bin/php /opt/scripts/cron1.php


aufrufe. Der automatische Aufruf über cron führt zwar das Skript aus, die über exec eingebundenen Skripte werden aber nicht ausgeführt. Der direkte Aufruf von cron2.php über den Apachen funktioniert.

Was übersehe ich? Gibt es vllt. eine andere Möglichkeit, über eine andere PHP Funktion die cron2.php aufzurufen / zu forken?
27.09.2012
doublem 683 1 1 9
Hast Du mal geloggt, ob der cron2 wenigsten versucht aufzurufen? Also als erstes mal in eine Datei schreiben, oder so und das Hauptscript nach dem exec() noch eine Zeit beschäftigen.
Falls nach dem Ende des Hauptprogramms alle iniziierten Prozesse gleich mit beendet werden. (Ist nur eine Vermutung.)
Xantiva 28.09.2012
1
ich vermute, du hast hier ein Rechte Problem. Die versuchts die Datei cron2.php nicht mit deine User Rechten auszuführen, sondern mit den Cron User Rechten. Ich vermute mal, dass Cron kein exec ausführen darf. Was ist den überhaupt dein Ziel? Kannst du nicht über include arbeiten?
XJenso 01.10.2012
Wenn Du mit den bisherigen Tipps nicht weitergekommen bist, dann lass mal die Ausgabeumleitungen mal weg und schau dir die Mails an die Cron dann an den Cron-User verschickt.
Bin da die Tage über etwas ähnliches gestolpert; cronjob wird nur ausgeführt, wenn STDERR nicht umgeleitet wird... warum werde ich irgendwann noch herausfinden...
phg 03.10.2012
Ich würd es wie XJenso machen und die Folgescripte nicht mit exec aufrufen. Stattdessen würd ich sie über require einbinden, was im Gegensatz zu include im Fehlerfall einen Error schmeißt und nicht nur ein Warning, was je nach Loglevel Einstellung dann auch zu einem Logeintrag führt.
lunatigs 21.10.2012