Veröffentlicht 15. Juni 201015 j Hallo zusammen, Ich versuche per exec() ein Batch File zu starten. Das Batch File liegt im selben Ordner wie das php File. Wenn ich das Batch File direkt starte funktioniert es auch. Jedoch nicht wenn ich das Batch File per exec starten möchte: exec('cmd.exe /c zweitens.bat >> test.txt'); Das Test.txt gibt mir folgendes aus: C:\Inetpub\wwwroot\fileliste>xcopy \\backup01\htdocs$\fileliste\test.mpg \\backup01\htdocs$\fileliste\test\ /Y /Q Das safe mode ist auf off gestellt Hat jemand eine Idee wo das problem liegen könnte? Bin völlig ratlos.... Gruss Angins
15. Juni 201015 j Sorry bin mir nicht sicher was du meinst...etwa die errors von error_reporting(E_ALL); Das gibt kein error zurück...
15. Juni 201015 j Das gibt kein error zurück... Gut. Dir ist klar, dass ein PHP Script nicht unter dem gleichen User läuft, wie wenn Du es per Hand ausführst, d.h. Deine Batchdatei wird immer von dem User aufgerufen, der das PHP Script startet. Somit wäre die Frage, darf der User auf die Batchdatei zugreifen und diese ausführen (analoges für cmd, Datei und Pfade). Ebenso sollte man die Pfadangaben prüfen, damit diese auch korrekt arbeiten als Hinweis: Um Dateien zu kopieren kann man auch die interne PHP Funktion PHP: copy - Manual verwenden
15. Juni 201015 j Ja das ist klar. Deshalb setze ich zuerst mit cpau die Userrechte. Zudem habe ich auf allen Ordnern und Dateien die Rechte überprüft. Dei Pfade müssen stimmen. Das Batch läuft ja eigentlich, also müssen die Pfade im Batch File stimmen. Und das php File ist ja im selben ordner wie das Batch File. Kann leider nicht die php interne copy Funktion benützen. Da ich ein anderes Userrecht (eben mit cpau) vergeben muss. Denn das Ziel am Schluss ist, das ich auf einen anderen Server zugreife, um die Dateien zu kopieren.
15. Juni 201015 j Wird denn die Batchdatei ausgeführt? Führe nur einmal die Batchdatei aus, ohne Pipe.
15. Juni 201015 j Setze die weiteren Parameter, die exec() entgegennehmen kann und schaue was in den für Werte stehen. PHP: exec - Manual
15. Juni 201015 j Ja das ist klar. Deshalb setze ich zuerst mit cpau die Userrechte. Zudem habe ich auf allen Ordnern und Dateien die Rechte überprüft. Das nützt Dir alles nichts, wenn der User, der das PHP Script startet nicht cmd ausführen darf und ich meine mich zu erinnern, dass die IUSER* kein Executable-Recht für cmd hat
16. Juni 201015 j Ja die Batchdatei wird ausgeführt. Und cpau scheint auch zu funktionieren, wenn ich nämlich ein falsches Passwort eingebe, funktioniert das kopieren nicht. Der erste Parameter gibt nichts zurück, der zweite gibt 1 zurück. Okay, das wusst ich nicht, dass IUser wahrscheinlich keine Executable-Recht für cmd besitzen. Weisst du ob es da ne Möglichkeit gibt, solche Rechte zu vergeben?
16. Juni 201015 j Ja die Batchdatei wird ausgeführt. Und cpau scheint auch zu funktionieren, wenn ich nämlich ein falsches Passwort eingebe, funktioniert das kopieren nicht. Du widersprichst Dir, denn wenn cmd nicht ausgeführt wird, wird auch die Batchdatei nicht ausgeführt, also macht Deine Aussage keinen Sinn. Es geht nicht darum, ob Du (!) die Batchdatei ausführen kannst, sondern der User des Webservers. Okay, das wusst ich nicht, dass IUser wahrscheinlich keine Executable-Recht für cmd besitzen. Weisst du ob es da ne Möglichkeit gibt, solche Rechte zu vergeben? Du kannst Rechte immer vergeben, wobei ich das aus Sicherheitsgründen sehr bedenklich halte, wenn einmal die cmd erlaubst und dann noch den Benutzerzugriff veränderst, denn jedes Programm, das Du in der Batchdatei verwendest muss auch die passenden Rechte besitzen.
16. Juni 201015 j Konnte das Problem soeben beheben. Hab nun einfach die cpau kommandozeile direkt ins exec geschrieben, und dort per -ex das batchfile mit der xcopy funktion aufgerufen: exec("CPAU.exe -u user -p passwort -lwop -wait -c -ex copy.bat >> test.txt); Danke Vielmals für eure Hilfe Grüsse Angins
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.