Exec batch datei

Hallo,

nach endloser Google und Foren Suche, hoff ich darauf, dass ich vielleicht hier doch noch eine Lösung für mein Problem finde.

Ich möchte mit PHP eine batch Datei starten. Normalerweise müsste dies ja mit exec(„file.bat“) kein Problem sein. Aber anstatt die Datei auszuführen, öffnet sich nur ein leeres cmd-Fenster.
Starte ich die batch-Datei per Hand, wird sie ausgeführt, also scheint kein Fehler in der file.bat zu sein.
PHP Einstellungen oder Admin Rechte scheinen auch nicht das Problem zu sein, denn andere Dateien wie txt oder exe werden ohne Probleme ausgeführt.

Danke im Vorraus!!!
mfg

hallo maja

meines wissens dürfte das nicht gehen.
was möchtest du den per batch machen?
eigentlich geht alles was per batch geht auch direkt in php.

Gruß
Phillip

Hallo Philip,
danke für die schnelle Antwort.

Ich möchte über eine Batch-Datei ein Kommandozeilen basiertes xslt-Tool aufrufen, dass mir eine zuvor erstellte xml-Datei in eine html Seite umwandelt. Das funktioniert auch einwandfrei, nur eben nicht von der php Seite aus.

Aber eigentlich müsste es gehen. Ich hab einige Einträge in Foren gefunden, in denen per exec() eine Batch-Datei aufgerufen wird und da funktioniert alles einwandfrei. Nur bei mir nicht… :-/

kannst du das tool nicht direkt per php aufrufen? und den umweg per batch weglassen?

Gruß
Phillip

Hallo

Probier mal folgendes:

  • vollständigen Pfad angeben
  • statt exec() system() verwenden
  • falls du unter Windows arbeitest den Interpreter mit angeben(z. B. cmd.exe test.bat)

Ich möchte mit PHP eine batch Datei starten. Normalerweise
müsste dies ja mit exec(„file.bat“) kein Problem sein. Aber
anstatt die Datei auszuführen, öffnet sich nur ein leeres
cmd-Fenster.

erstell doch mal eine php-datei die nur den batchaufru, also dein exec() enthält und starte das von der eingabeaufforderung aus, nach dem schema:
c:\php\php.exe -q test.php

und lass dir vom exec auch den gesamten output und statuscodes ausgeben (vgl.: http://php.net/exec )

dann solltest du aussagefaehige fehlermeldungen erhalten.

exec() hat geklappt!
Oh mann, vielleicht hätte ich doch mal die Batch-Datei hier posten sollen… Es waren die pause-Befehle in der Batch-Datei. :-/

Vielen, vielen Dank für die Antworten. Nachdem ich das mit system() und output versucht hab, wurde mir dann klar, dass die cmd einfach nur nichts anzeigt, aber trotzdem die bat-Datei startet. Und die pause-Befehle (die ich zum Testen reingeschrieben hatte) haben das ganze dann natürlich nach dem ersten Befehl gestoppt.

Also, nochmal danke!
mfg, Maja