Zu blöde für nen PHP-Cronjob

  • Moin Leute,


    ich habe ein Problem mit einem PHP-Script, das ich per Cronjob alle 10min ausführen möchte.
    Das Script soll den Onlinestatus ermitteln, indem versucht wird, ein Socket zu öffnen. Sehr simple, wahrscheinlich nicht sonderlich schön, aber eines nach dem anderen:


    Code
    [...]
    // red_dns
                    $s = @fsockopen("127.0.0.1", "53", $errno, $errstr, 3);
                            if(!$s) shell_exec('cp -f off.gif red_dns.gif');
                            else shell_exec('cp -f on.gif red_dns.gif');
                    @fclose($s);
    [...]


    Wie man sieht, soll per shell-exec ein vordefiniertes "Online"/"Offline"-Bild auf ein für den Dienst entsprechendes kopieren und ggf. überschreiben.
    Ich kann dann den Status per einfachem HTML-Code einbinden.


    Nun funzt das Script prime per Browseraufruf von zu Hause und per
    $: /usr/bin/php [PHP-Script]


    Toll, dachte ich, klappt alles bestens, dann mal rein in die crontab -e:

    Code
    */10 * * * *       /usr/bin/php [PHP-Script] >> /tmp/cron1
    */10 * * * *       lynx --dump [PHP-Script] >> /tmp/cron2


    Pustekuchen! Ich habe keine Ahnung, warum das nicht klappt.
    An den Rechten kann es nicht liegen. Ich habe den Cronjob schon unter root installiert und vorsichtshalber einmal mit "whoami >> /tmp/whoami" im Cronjob geprüft, ob es wirklich root ist.


    Die beiden Files cron1 und cron2 (Output der beiden Versuche mit lynx und php) sind leer.


    Kann mir wer sagen, wo da der Wurm drin ist? Ich weiß nicht mehr weiter...


    Danke!!!

    Mein Server:
    v(olks)Server 1. Serie: 2,5GHz, 1024MB RAM, 1024MB Swap, 2x60GB-Raid1-HDD, Traffic-Flat
    Node:
    78.46.117.9x | hos-tr2.ex3k4.rz7.hetzner.de

  • Probiers mal mit setzen von Gänsefüsschen.


    Habe mich mit dem PHP Aufruf nicht so intensiv beschäftigt, meine aber dass Parameter mit leerzeichen getrennt werden.


    Code
    index.php?arg1=1&arg2=2&arg3=3


    Das sieht beim Cronjob glaube ich so aus:


    Code
    /use/bin/php index.php 1 2 3


    Probier das ganze mal so:


    Code
    */10 * * * * "/usr/bin/php datei" >> /tmp/cron1
  • Was sagt das Log dazu? Wird die Datei überhaupt gefunden? Hast du die PHP-Datei mit absolutem Pfad angegeben? GET-Parameter kannst du tatsächlich nicht verwenden, da diese als Dateiname interpretiert werden! Stattdessen musst du sie wie normale Parameter angeben und kannst sie aus $_SERVER['argv'] auslesen.



    MfG Christian

    "Wer nur noch Enten sieht, hat die Kontrolle über seine Server verloren." (Netzentenfund)

  • Zitat

    Probiers mal mit setzen von Gänsefüsschen.


    Hab' ich schon. Bringt leider nichts. Sollte aber auch nicht dran liegen.


    Zitat

    Hast du die PHP-Datei mit absolutem Pfad angegeben?


    Jop, habe ich.


    Zitat

    GET-Parameter kannst du tatsächlich nicht verwenden


    Habe ich auch nicht vor. Das Script ist statisch (s. meine Beispielpassage.


    Zitat

    Was sagt das Log dazu?


    Welches Log speziell? Syslog?
    Ich muss mal die Mailbenachrichtigung anständig einstellen...

    Mein Server:
    v(olks)Server 1. Serie: 2,5GHz, 1024MB RAM, 1024MB Swap, 2x60GB-Raid1-HDD, Traffic-Flat
    Node:
    78.46.117.9x | hos-tr2.ex3k4.rz7.hetzner.de

  • Zitat

    Ja, das Syslog, dort sollten alle Cronjob Aufrufe drinnen sein


    Verdammt, ich Depp.


    Ich habe statt des Syslogs eine Email-Benachrichtigung an einen anderen Mailserver eingestellt. Dort war dann auch der Host eingetragen.
    Allerdings habe ich den Hostnamen kürzlich geändert und hatte nun ein paar Tausend Mails, nachdem ich den Hostnamen hinzugefügt habe und das Syslog voll mit Fehlern von Sendmail.
    Und ich Gimp wundere mich, dass ich keine Meldungen per Email kriege.


    OK, zu den Log-Einträgen, die ich jetzt ja wieder empfange:


    Zitat

    Hast du die PHP-Datei mit absolutem Pfad angegeben?
    => Jop, habe ich.


    Das reicht nicht. Ich habe angenommen, dass php das Arbeitsverzeichnis den Ort des scripts nimmt. Fehlanzeige. Im Script müssen ebenfalls absolute Pfade verwendet werden. Nun klappt alles!


    Danke euch!!!

    Mein Server:
    v(olks)Server 1. Serie: 2,5GHz, 1024MB RAM, 1024MB Swap, 2x60GB-Raid1-HDD, Traffic-Flat
    Node:
    78.46.117.9x | hos-tr2.ex3k4.rz7.hetzner.de