Ankündigung

Einklappen
Keine Ankündigung bisher.

exec startet batch nicht

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • exec startet batch nicht

    Ich versueche per php ein Batch File zu erstellen und zu starten.
    Das erstellen funktioniert wunderbar, jedoch will das Batch per exec einfach nicht starten.

    PHP-Code:
    $datei fopen("test.bat""w+");                     

    fwrite($datei"\\\intern\htdocs$\\fileliste\CPAU.exe -u admin -p pw -ex \"xcopy ".$pfad1." ".$pfad2."\ /Y /Q\"");    # Logdaten in Logfile schreiben
    fclose($datei); 
    PHP-Code:
    exec('command.com /c test.bat'); 
    Wenn ich den erstellten Batch selber per öffnen starte, funkioniert der Batch wunderbar. Wenn ichs aber per exec versuche, wird das file nicht kopiert.
    Es scheint als würde der Batch gar nicht angesprochen werden.

    Hat jemand ne idee woran das liegen könnte? safe_mode ist übrigens auf off gesetzt.

    gruss
    angins


  • #2
    Probiers doch erstmal mit

    Code:
    echo Hallo
    pause
    Und dann vielleicht damit, mal den absoluten Pfad der Datei anzugeben.
    --

    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
    Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


    --

    Kommentar


    • #3
      habe eine test.bat erstellt und es mit auch mit einem absoluten Pfad versucht anzusprechen.

      PHP-Code:
       exec('command.com /c C:\Inetpub\wwwroot\fileliste\test.bat'); 
      Als ich die Seite geladen habe, ist nichts geschehen.
      Das cmd öffnet sich erst gar nicht.

      Kommentar


      • #4
        Du hast die Seite im Browser geladen?
        Dann wirst du mit Sicherheit keine CMD sehen

        PHP führt das Kommando in einem eigenen Shellprozess aus und hat keinen Einfluss auf die Konsole beim Clienten (wie auch, alles was die Beiden (PHP und den Client) verbindet, ist das HTTP-Protokoll)

        Um den Output des ausgeführten Shellskripts abzufangen, hat exec() einen zweiten [und dritten] Parameter:

        PHP: exec - Manual

        LG

        Kommentar


        • #5
          Ich denke, wir können davon ausgehen, dass der TE hier einen lokalen Webserver verwendet.
          --

          „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
          Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


          --

          Kommentar


          • #6
            Ja, sicher.

            Das weiß der Apache aber nicht. Der Prozess wird weiterhin im Hintergrund laufen, und nicht sichtbar.

            Kommentar


            • #7
              So ist es

              Kommentar


              • #8
                Ich bezog mich auch mehr hierauf:
                (wie auch, alles was die Beiden (PHP und den Client) verbindet, ist das HTTP-Protokoll)
                Was ist denn nun die Frage? Läuft die Batch? Bei mir geht es sowohl mit absolutem Pfad alleine (ohne command) als auch mit "cmd /c absoluter_pfad"..
                --

                „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                --

                Kommentar


                • #9
                  Also wenn ich nun wie folgt das test.bat starte:

                  PHP-Code:
                  exec("cmd /C test.bat"$output$return_var);
                  echo 
                  $output[2]; 
                  gibt es mir Hallo zurück. Scheint also als würde es funktionieren, oder?
                  Aber eben mein Batch den ich laufen lassen möchte funktioniert nicht.

                  Kommentar


                  • #10
                    Dann wird das vermutlich am Batch selbst liegen

                    Kommentar


                    • #11
                      Zitat von Angins Beitrag anzeigen
                      PHP-Code:
                      $datei fopen("test.bat""w+");                     

                      fwrite($datei"\\\intern\htdocs$\\fileliste\CPAU.exe -u admin -p pw -ex \"xcopy ".$pfad1." ".$pfad2."\ /Y /Q\"");    # Logdaten in Logfile schreiben
                      fclose($datei); 
                      Also wenn ich mir die Verteilung der Backslashes so anschaue, wundert es mich nicht, das es "nicht läuft"...
                      Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                      Kommentar


                      • #12
                        Hallo Allerseits,
                        ich bin ganz neu hier und ein völliger PHP-Anfänger. Ich habe mich registriert, weil mich ein ähnliches Problem wie Angins zur Verzweiflung treibt. Ich möchte mit Hilfe eines PHP-Scripts eine DOS-Software starten. Dabei habe ich schon verschiedene Variationen eines exec-Kommandos durchprobiert. Die DOS-Software und das PHP-Script laufen natürlich serverseitig bzw. das DOS-Programm soll serverseitig laufen. Hier die PHP-Scriptzeilen ...
                        PHP-Code:
                        <html>

                        <head>
                        <title>greenink WebShop</title>
                        </head>

                        <body>
                        <?PHP
                        exec
                        ("C:/WINDOWS/SYSTEM32/CMD.EXE /C Z:\\SETUPP~1\\DOS\\SAVE\\MYPROGS\\GWS\\PROGPATH.GWS\\GWS.EXE");
                        ?>
                        </body></html>
                        Wenn ich dieses Script vom Browser aus starte, passiert rein gar nichts, keine Fehlermeldung, nichts.
                        Die Syntax von exec habe ich aus einem Buch, doch dort steht nur eine kurze Befehlsbeschreibung. Könnte jemand mir bitte behilflich sein?

                        Herzliche Grüße,
                        Kallemann
                        Glück ist zerbrechlich, man muss es vorsichtig anfassen.

                        Kommentar


                        • #13
                          exec() führt ein gegebenen Befehl aus, ohne eine Ausgabe zu erzeugen. Die Funktion gibt lediglich die letzte Zeile aus dem Befehlsergebnis zurück. Wenn Sie auf die direkte Rückgabe/ Ausgabe eines Befehls angewiesen sind, dann benutzen Sie stattdessen die Funktion passthru().
                          Die Zeile wird wohl in deinem Fall eine leere Zeile sein.

                          Stelle sicher:
                          - Das du die funktionsweise von exec verstanden hast
                          - Das Programm das du dort startest mit dem Betriebssystem des Servers kompatibel ist
                          - Das Programm das du dort startest eine Ausgabe zurückliefert für Erfolg / Misserfolg die du auswerten könntest

                          Man sollte in aller regel das Ausgabe-Array nutzen um Programminteraktionen zu überwachen. Bedenke auch, das es relativ Sinnbefreit werden kann Shop-Software über exec in ein HTML-Dokument einzubetten, derweil darüber relativ bescheidene Navigation / Steuerung möglich ist.
                          [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

                          Kommentar


                          • #14
                            Hallo TrOy,
                            ich versuche eine DOS-Software über ein PHP-Script zu starten. Die DOS-Software gibt BMP-Bilder aus, über die eine Image-Map gelegt wird. Dadurch kann ich die DOS-Software steuern. Wenn Du möchtest, kannst Du Dir das ja mal zum besseren Verstandnis unter http://www.karllindfeld.de/screen00.php ansehen.
                            Zur Zeit kann ich die DOS-Software nur unter Windows starten, per Doppelclick auf eine PIF-Datei. Wenn ich sie aber als Webshop gebrauchen möchte, muß ich sie auch über einen Browser via PHP-Scipt starten können.
                            Versteht Ihr mein Problem?
                            Glück ist zerbrechlich, man muss es vorsichtig anfassen.

                            Kommentar


                            • #15
                              Dein Problem versteh ich, nur du siehst das aus einem falschen Blickwinkel. Das Programm was du nutzten willst hat ein eigenes Interfaces zur Steuerung. Würde es beim aufruf automatisch irgendetwas erstellen wäre das so lösbar. Da es aber Benutzerwerte erwartet, kannst du dessen Start nicht einfach blind in eine Webseite "integrieren".

                              exec() startet das was du angibst als eigenen Prozess. Du kannst ausgaben ( textbasierende ) per zusätzliche Angaben von einem Array abfangen um sie nach dem ausführen auszuwerten. Die Software innerhalb eines Webshops (?) zu nutzen empfinde ich hier als falschen Ansatz. Wenn du unbedingt Bilder ((teil-)automatisiert) erstellen willst, kannst du das auch mit PHP ( GDlib ) sogar mit wesentlich geringerer Zieldatei-Größe als es BMP ( Windows Bitmaps ) könnte ( bspw. JPEG, PNG, ... ).
                              [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

                              Kommentar

                              Lädt...
                              X