hawkmaster1: PHP script per Batch und Aufgabenplanung läuft nicht

Hallo zusammen, ich versuche gerade ein PHP Script per Windows Batch Datei und Aufgabenplanung auszuführen. Das Script soll Datenbank Updates machen.

update.bat

"C:\xampp\php\php.exe" -f "C:\xampp\htdocs\Project\update_Auto.php"

Das Problem ist das nichts passiert wenn ich das Script in der Windows Aufgabenplanung ausführe. Ich habe schon den Haken bei "Mit höchster Berechtigung ausführen" gesetzt.

Wenn ich aber die Batchdatei "update.bat" im Windows Explorer doppelklicke, dann klappt alles super. Was ist denn der Unterschied? Kann es sein das die PHP Konfiguration per Aufgabenplanung nicht gefunden wird und event. die MySQL PDO Treiber nicht geladen werden? Das Problem ist das es keine Fehlermeldungen oder Logs gibt wenn man das per Aufgabenplanung ausführt.

vielen Dank Gruss hawk

  1. Tach!

    ich versuche gerade ein PHP Script per Windows Batch Datei und Aufgabenplanung auszuführen. Das Problem ist das nichts passiert wenn ich das Script in der Windows Aufgabenplanung ausführe.

    Die Windows-Logs kann man sich mit dem Event Viewer (eventvwr) anschauen.

    Wenn ich aber die Batchdatei "update.bat" im Windows Explorer doppelklicke, dann klappt alles super. Was ist denn der Unterschied?

    Vielleicht liegt es daran, dass keine Ausgabe erfolgen kann. Hintergrundprozesse bekommen diese Berechtigung nicht.

    Kann es sein das die PHP Konfiguration per Aufgabenplanung nicht gefunden wird und event. die MySQL PDO Treiber nicht geladen werden?

    Spekulatius schmecken zwar, bringen aber die Problemlösung nicht wirklich voran.

    Wenn du die Probieren-wir-mal-Methode versuchen möchtest, solltest du mit einem Minimalscript anfangen. Wenn du die Datenbanktreiber in Verdacht hast, lass den Datenbankteil weg und lass dein Script so tun als ob der erfolgreich gewesen wäre.

    Das Problem ist das es keine Fehlermeldungen oder Logs gibt wenn man das per Aufgabenplanung ausführt.

    Siehe ersten Antwortsatz.

    dedlfix.

    1. Hallo dedlfix, Danke dir.

      es lag eigentlich nur an einer kleinen "Notice undefined index" Meldung die aber wichtig ist.

      In dem PHP Script werden Datenbank Funktionen eingebunden und die DB Verbindung hergestellt. Da gab es auch am Anfang einen Eintrag wie:

      if ($_SERVER['HTTP_HOST'] == "www.meineDomain.org"){
      	$MYSQL['HOST'] = "dasdadsm";
      }else{
      	$MYSQL['HOST'] = 'localhost'
      ...
      

      Aber $_SERVER['HTTP_HOST'] ist ja unbekannt wenn man das Script per Aufgabenplanung ausführt. Es steht jetzt nur noch
      $MYSQL['HOST'] = 'localhost' drin.

      Warum das Script jedoch in der Windows CDM funktionierte ist mir nicht recht klar. Da wird ja $_SERVER['HTTP_HOST'] auch nicht gefunden. Oder aber beim direkten Ausführen der Batch Datei werden Notice bzw. Fehlermeldungen anders behandelt als mit der Windows Aufgabenplanung.

      viele Grüße hawk

      1. Moin!

        Warum das Script jedoch in der Windows CDM funktionierte ist mir nicht recht klar. Da wird ja $_SERVER['HTTP_HOST'] auch nicht gefunden. Oder aber beim direkten Ausführen der Batch Datei werden Notice bzw. Fehlermeldungen anders behandelt als mit der Windows Aufgabenplanung.

        Wie dedlfix schon schrieb: Die Ausgaben müssen irgend wo hin, sollen in ein Terminal. Ein Terminal ist nicht da wenn der Aufgabenplaner das Skript ausführt. Also schauen sich NT-kernel, Aufgabenplaner, PHP und cmd.exe an und beenden die Sitzung wegen des von diesen nicht behebbaren Problems.

        Generelle Posix-konforme Lösung ist eine Umleitung:

        update.bat:

        C:\xampp\php\php.exe" -f "C:\xampp\htdocs\Project\update_Auto.php > c:\\logs.txt 2> c:\\logs.txt
        

        Linux würde übrigens versuchen, dem Eigentümer des Jobs ein Mail mit den Ausgaben/Fehlern zu senden.

        Jörg Reinholz

        1. Tach,

          Linux würde übrigens versuchen, dem Eigentümer des Jobs ein Mail mit den Ausgaben/Fehlern zu senden.

          cron würde das tun, Linux hat damit nur am Rande was zu tun.

          mfg
          Woodfighter

          1. Moin!

            cron würde das tun

            In dem Fall womöglich der at-demon.

            Linux hat damit nur am Rande was zu tun.

            Ja. Klar. War auch eher für die Laien formuliert.

            Jörg Reinholz

            1. Tach,

              cron würde das tun

              In dem Fall womöglich der at-demon.

              ja, der at-daemon ;-) macht das auch.

              mfg
              Woodfighter

              1. Moin!

                ja, der at-daemon ;-) macht das auch.

                Soso.

                Jörg Reinholz

                1. Tach,

                  ja, der at-daemon ;-) macht das auch.

                  Soso.

                  ich kenne demon nur als veraltete (oder fehlerhafte) Schreibweise; im englischen Wiktionary taucht die gesuchte Begriffserklärung auch nicht auf: https://en.wiktionary.org/wiki/demon; wird das im Deutschen tatsächlich häufiger so gebraucht? Da ich zu denjenigen gehöre, die das /ˈdeɪmən/ und nicht /ˈdiːmən/ aussprechen, würde ich nie auf die Idee kommen, dass die e-Schreibweise passend wäre.

                  Das Jargon-File sieht es so, wie die deutsche Wikipedia: „Often used equivalently to daemon — especially in the Unix world, where the latter spelling and pronunciation is considered mildly archaic.“, allerdings scheint sich dass auch in der UNIX-Welt nicht durchgesetzt zu haben, die daemon()-Funktion in der libc ist zuerst in 4.4BSD aufgetaucht.

                  mfg
                  Woodfighter

                  1. Moin!

                    ja, der at-daemon ;-) macht das auch.

                    Soso.

                    „Often used equivalently to daemon — especially in the Unix world“

                    Ich bin weit entfernt von der Vermutung, dass Dir unklar sein könnte, was ich darüber denke.

                    Jörg Reinholz

                    1. Tach,

                      ja, der at-daemon ;-) macht das auch.

                      Soso.

                      „Often used equivalently to daemon — especially in the Unix world“

                      Ich bin weit entfernt von der Vermutung, dass Dir unklar sein könnte, was ich darüber denke.

                      ich vermute, dass du denkst, dass daemon und demon austauschbar sind; was mich jetzt interessiert, ist wessen Wahrnehmung näher an der Realität ist.

                      mfg
                      Woodfighter

                      1. Hallo,

                        ich vermute, dass du denkst, dass daemon und demon austauschbar sind

                        im softwaretechnischen Kontext anscheinend schon. Zumindest der Wiki-Artikel deutet das an.

                        was mich jetzt interessiert, ist wessen Wahrnehmung näher an der Realität ist.

                        Weder in meinem Informatik-Studium Anfang der 90er, in dem auch Unix-Basiskenntnisse vermittelt wurden, noch in meiner eigenen Erfahrung mit Linux in den letzten 5..8 Jahren ist mir die Schreibweise "demon" je begegnet. Die kenne ich nur aus dem Alltags-Englisch als Dämon (böser Geist) - dort aber generell ohne 'a'.

                        So long,
                         Martin