cronjob (php skript funktioniert in der shell aber nicht im cronjob)

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo Leute :D

    neuer tag neues Problem :P

    Ich habe ein php skript was wenn ich es in der shell aufrufe wunderbar funktioniert(Code folgt). Wenn es aber durch einen einen cronjob jede Minute aufgerufen werden soll nicht mehr funktioniert woran kann das liegen? Für jede Hilfestellung bin ich euch sehr dankbar :D

  • cronjob (php skript funktioniert in der shell aber nicht im cronjob)? Schau mal ob du hier fündig wirst!

  • Wenn du mit absolute Pfade beim Start meinst im cronjob den gesamten Pfad angeben das habe ich gemacht

    * * * * */usr/bin/php /var/www/html/Datei.php

    So hab ich es eingegeben

    Und im Skript hab ich den Pfad von der txt.weckzeiten auch hinzugefügt klappt aber immer noch nicht

    Einmal editiert, zuletzt von Mert (11. November 2017 um 16:35)

  • Hallo Mert,

    setze auch mal einen absoluten Pfad in Zeile 31. Oder wie hofei meinte - aber nicht explizit sagte - ÜBERALL ABSOLUTE PFADE. Nicht nur mal irgendwo einmalig.

    Und siehste! Schon funktioniert's!

    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

  • Hallo llutz,

    hadda schon - sachda jedenfalls.

    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

  • Hallo zusammen und danke für eure Beteiligung :D

    Genau in Zeile 3 hab ich es bereits geändert.

    Allerdings bin ich nicht sicher wie ihr das mit Zeile 31 meint, da dies ja keine Datei sondern ein Befehl ist. Inwiefern kann denn dazu ein Pfad aussehen ?

    Oder ist das so gemeint das ich eine weitere Datei erstellen soll die den Befehl beinhaltet und den gesamten Pfad zu dieser Datei einfügen muss ?

    Grüße mert

  • oder mit which mpc

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

  • Hallo,

    Zitat


    which findet keine shell-builtins, deshalb ist man meist mit type auf der sicheren Seite.

    Ich benutzte ja für sowas whereis NAME_DES_PROGRAMMS_ODER_BEFEHLS ,weil das AFAIK genau dafür gemacht ist.

    type ls gibt z.B bei mir (Ubuntu 16.04) ls ist ein Alias von »ls --color=auto aus, whereis ls gibt ls: /bin/ls aus.

    Abgesehen davon: Shell Buildins kann man doch gar nicht direkt aufrufen - da muss doch die Shell für laufen, oder?

    Gruß, noisefloor

  • Und was ist z.B. die Bash, in der du diese Befehle eintippst? Richtig, eine (interaktive) Shell. Und wenn man da z.B. help eingibt, ruft man damit ein Shell built-in auf, denn help ist eines, von vielen ( abhängig von der benutzten Shell).

    Wenn du nichts zu sagen hast, sag einfach nichts.

  • Hallo zusammen,

    hier ein paar Ausgaben:

    Code
    which help
    
    whereis help
    help: /usr/share/help
    
    type help
    help ist eine von der Shell mitgelieferte Funktion.

    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

  • Hallo,

    richtig und type help zeigt das auch korrekt an. Aber ich sehe den "use case" nicht, wo man in einem Nicht-Shell Skript (wie einem PHP Skript) zwingend ein shell Build-in aufrufen muss. Das meinte ich in Post #11.

    Du hast natürlich in so fern recht, dass man mit type (und nicht mit which oder whereis) feststellen kann, ob es ein Buildin ist.

    Gruß, noisefloor

    • Offizieller Beitrag

    Hier auch ein paar Ausgaben:

  • Aber ich sehe den "use case" nicht, wo man in einem Nicht-Shell Skript (wie einem PHP Skript) zwingend ein shell Build-in aufrufen muss. Das meinte ich in Post #11.

    Das war ein Missverständnis. Mein Hinweis bzgl. type vs which war allgemeiner Natur, nicht auf das aktuelle/oder andere Script(e) bezogen..

    Wenn du nichts zu sagen hast, sag einfach nichts.

  • IMHO brauch er für mpc keinen absoluten Pfad angeben, da /usr/bin/ auch über crontab im PATH vorhanden ist - und somit die ganze Diskussion der letzten 10 Beiträge eigentlich überflüssig ist....

    Cron benutzt von sich aus nicht die PATH-Variable des Users, sondern PATH="/usr/bin:/bin".

    Wichtig ist nur, für Zeile#3 den absoluten Pfad zu setzen. In meiner wecker.php, woher der Code stammt, war auch ein absoluter Pfad angegeben - also im Zweifel einfach mal den Code vergleichen. ;)

  • Hallo zusammen

    Habe es mit Type mpc versucht

    Ausgabe : mpc is hashed (/usr/bin/mpc)


    Nun habe ich in Zeile 31 eingefügt

    System ("/usr/bin/mpc mpc play 1")

    Es tut sich aber leider immer noch nichts

    Nach der Aussage von meigrafd lieg es also gar nicht am

    Pfad aber woran kann es dann liegen da die Datei wenn ich sie in der Shell Aufrufe funktioniert aber im cronjob halt immer noch nicht

    In Zeile 3 den Pfad habe ich geändert

  • Am besten wärs du machst einfach mal ein copy&paste von deiner manuellen Ausgabe... Dann sehen wir in welchem Verzeichnis du dich bei der Ausführung befindest und dazu postest du dann bitte noch eine Ausgabe von ls -la um das zu verifizieren.

    Ich weiß nur: Mein Code funktioniert.

    Was hast Du also anders gemacht?

  • Es funktioniert ?

    Danke für die Hilfe ich hätte allerdings noch eine Frage meigrafd was wird in diesem schleifen Kopf aus deinem Code abgefragt ?

    if (isset($argv[1]) AND (!empty($argv[1]) AND $argv[1] == "cron"))

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!