Shebang für PHP

  • Hallo,
    ich habe in der crontab eine PHP-Datei eingetragen. Diese wird aber nicht gestartet.


    Jetzt habe ich gelesen, daß ich einen Shebang nachpflegen soll.


    Was muß ich da bei der TS-409 in der PHP-Datei eintragen, die über den Cronjob gestartet wird?


    Grüße und Dank


    Ulli


    --
    http://heist.hobby-site.org

  • Hi uheist,


    eine Shebang brauchst Du für Shell Scripts.
    Bei php brauchst Du das nicht.


    Du bräuchtest nur ein

    PHP
    <?php
    ?>


    Jedoch sind bei einem Cron mittels php auch einige Dinge zu beachten.
    Das Script sollte nicht all zu lange dauern, da PHP u.a. eine max_execution_time (maximale Ausführungszeit) gibt.
    Wenn Du z.B. ein mySQL Backup machen möchtest, dann macht man dies am besten via mysql dump, da es bei php vorkommen kann, dass der Prozess nach der "Zeit" abbricht.
    Desweiteren sind shell_exec() und exec() Kommandos nicht wirklich empfohlen. Und das kann auch in "die Hose" gehen.
    Es kommt praktisch darauf an, was Du innerhalb der php Routine machst. ;)
    Man sollte für Cron's am besten via Shell Script Arbeiten, denn eigentlich ist da alles möglich, was auch in php möglich wäre.
    Also am besten gar nicht erst angewöhnen, mit php ernsthafte Cron Script's oder auch Shell Executes zu arbeiten.


    Grüsse, David

  • Hallo,


    am Anfang meines Skriptes steht

    PHP
    <?php
    set_time_limit(0);
    ignore_user_abort(true);


    Da es über die eigene Cron-Tab nicht funktioniert, helfe ich mir derzeit über cronjob.de (was aber nicht sein müßte).


    Das Skript versendet mir per PHP aus meiner Adressdatenbank die Geburtstags - E-Mail. ;)


    Der Eintrag in der crontab sieht so aus:
    15 4 * * * /share/MD0_DATA/Qweb/lesezeichen/index.php >/dev/null


    Selbstverständlich ist lesezeichen/index.php nicht der Pfad, der in der crontab steht, aber im Prinzip ähnlich dem orginal Eintrag.


    ... über den externen Aufruf funktioniert es, inkl. Mail-Versand, über die eigene crontab nicht.
    Shebang ist derzeit nicht eingetragen, da ich nicht weiß was.


    Über einen Tip freue ich mich sehr.


    Liebe Grüße, schönes Wochenende


    Ulli

  • Hi Ulli,


    Du kannst PHP Script's nicht so einfach ausführen.

    Code
    15 4 * * * /share/MD0_DATA/Qweb/lesezeichen/index.php >/dev/null


    Wäre das gleiche als würdest Du das direkt in der Konsole ausführen:

    Code
    /share/MD0_DATA/Qweb/lesezeichen/index.php


    Dabei dürfte nix rauskommen. ;)
    Mache auf den NAS mal ein:

    Code
    which php


    Iss schon etwas spät (oder auch früh) darum kann ich jetzt nicht selbst nach gucken.
    Der php Interpret sollte in irgend einem bin Pfad liegen.
    Danach rufst Du mal:

    Code
    /bin/php /share/MD0_DATA/Qweb/lesezeichen/index.php


    auf. (Wobei /bin/php das ist, was via which php gefunden wurde)
    Dann wird das Script auch ausgeführt. Daraus dann noch so in den Cron und schon sollte es passen.


    Grüsse, David

  • Hallo,


    das einzigste was ich zu php finden konnte ist in der apache.conf

    Code
    LoadModule php5_module libexec/libphp5.so


    ... oder funktioniert Dein Lösungsvorschlag nur mit der neusten Firmware?


    Grüße und Dank


    Ulli

  • Ich werde mich mal hier in das Thema einbauen ^^
    Also ich bin am konfigurieren meines Joomla-Aggregator... bei der Angabe der Kooponente steht einfach dabei "Cron Funktionalität des Webservers erforderlich für automatisches arbeiten..." ich habe direkt in der Webinterface Konfiguration der Feeds die Möglichkeit Cron Parameter einzutragen.... 0 * * * * etc....
    Aber wo ich jetzt Anfangen soll die Funktionalitaet des Webserver einzustellen weiss ich nicht, also hab ich mich mal hier umgeschaut... und ja hier bin ich :D :D


    Ich habe keine Ausgabe wenn ich über SSH "which php" eingebe... o_O
    Der Pfad der der Datei die automatisch arbeiten sollte ist - /Website/administrator/components/com_name/cron.name.php


    Und könnte mir einer erklären wie sowas eigentlich funktioniert was wir hier machen wollen?, also was ist ein Shebang zB? bzw ich denke ja nicht das wenn ich das alles was ihr hier vorgeschlagen habt in die konsole schreibe das das dann funktionieren wird, da muss man ja bestimmt eine script datei daraus machen oder ? - wie sieht so eine denn aus, das ich mal ein BSP habe. :-/


    Schöne Grüße - euer Newcomer Cole :oops:


    EDIT:
    Shebang = #! (steht am anfang einer Script Datei) :thumb:

  • Sehr schön. :thumb:


    Zitat

    Shebang = #! (steht am anfang einer Script Datei


    Und bei php fällt das weg weil es ja kein Shell script ist.


    suche die php executable mal via:

    Code
    find / -name php


    Du solltest Irgenwann einen Pfad mit /bin/php heraus bekommen.


    Das setzt Du dann z.B. so zusammen:

    Code
    /gefundener/pfad/bin/php /share/Qweb/phpscript.php


    Und daraus kannst Du dann ein Cron basteln. ;)


    David

  • Habe via

    Code
    find / -name php


    folgendes gefunden:


    /mnt/ext/opt/apache/bin/php


    :shock:


    So, ok - wegen den Crons und so, ich denke ich werde das über die Konsole machen und nicht über die Web-Konfiguration der Kooponente...
    also wenn ich dich richtig verstanden habe dann muesste ich ja jetzt ein Cron "basteln" der Verständniss halber frage ich dich mal ob es wirklich so
    aussehen sollte:


    BSP:

    Code
    0 * * * * /mnt/ext/opt/apache/bin/php /share/Web/Website/...../cron.name.php


    Könntest du mir vll erklaeren was hier nun genau gemacht wird mit dem bin/php pfad etc, oder ob das überhaupt stimmt was
    ich hier gebastelt habe :-/


    PHIL

  • Hi Phil,


    schaut doch gut aus.
    Teste mal ob das "die richtige" php version ist.

    Code
    /mnt/ext/opt/apache/bin/php -version


    Dabei sollte dann so etwas zurück kommen:

    Code
    PHP 5.3.2 (cli) (built: May  5 2010 17:27:47) Copyright (c) 1997-2010 The PHP GroupZend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies    with Xdebug v2.0.5, Copyright (c) 2002-2008, by Derick Rethans


    Zumindest so etwas ähnliches. Das iss halt hier bei mir 'nen lokaler lighttpd mit php 5.3.2 und xdebug. Also eine "Entwicklerversion".


    Du solltest aber auch was raus bekommen, wenn Du 'nen Script ausführst. z.B. So etwas:


    PHP
    <?php
    echo "Hallo Welt";
    ?>


    (Das wäre mal 'ne test.php)
    /mnt/ext/opt/apache/bin/php /share/.../test.php
    Dann sollte da ein "Hallo Welt" raus kommen.


    Zum Thema Cron und Crontab gibt's was in den Anleitungen was ich ungerne wiederholen würde. ;)
    Sieht aber so schon ganz gut aus :thumb:


    Grüsse, David

  • Aha Ok also den "Pfad"

    Code
    /mnt/ext/opt/apache/bin/php


    muss man nur dafür einfügen das die shell weiss was das für ein script is oder? in dem fall halt ein php script.. und im falle eines shell scripts muss man eben nichts
    vorne dran schreiben... is das im entfertesten richtig ? :P


    Ja meine Ausgabe ist denke ich gut bzw mit meiner Kooponente kompatibel !


    Code
    PHP 5.2.11 (cli) (built: Apr 23 2010 01:38:22) 
    Copyright (c) 1997-2009 The PHP Group
    Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies


    Joa mit Crons bin ich grad am tüfteln :D :D ^^ Btw du hast ne PM :oops:


    PHIL

  • Code
    /mnt/ext/opt/apache/bin/php


    Dies trifft für die TS-409 PRO aber leider nicht zu.
    Dort kann ich keinen Pfad php finden. Leider.


    Liebe Grüße


    Ulli

  • Zitat von "Terz"

    Und bei php fällt das weg weil es ja kein Shell script ist.


    und andere...!


    Zitat von "Frei aus der Wikipedia"


    Shebang (auch Magic Line) bezeichnet bei unixoiden Betriebssystemen die Zeichenkombination #! am Anfang eines Skript-Programms. Die Markierung führt dazu, dass das folgende Kommando mitsamt aller angegebenen Argumente beim Aufruf des Programms ausgeführt wird.


    Die Shebangzeile beschränkt sich keineswegs auf Shellskripte!


    1. Wo ist PHP?

    Code
    ~$ which php/usr/bin/php


    2. PHP-Datei mit Shebang erstellen:

    PHP
    #!/usr/bin/php<?php  echo "Hello World\n";?>


    3. Ausführbar machen

    Code
    chmod u+x blub.php


    4. Have Fun

    Code
    /Volumes/code/#test$ ./blub.php
    Hello World



    Mit freundlichen Grüßen und stinkenden Füßen,


    Chaos