Angins Geschrieben 15. Juni 2010 Geschrieben 15. Juni 2010 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
flashpixx Geschrieben 15. Juni 2010 Geschrieben 15. Juni 2010 Poste die Ausgaben des error.log. Meine Glaskugel ist nicht greifbar
Angins Geschrieben 15. Juni 2010 Autor Geschrieben 15. Juni 2010 Sorry bin mir nicht sicher was du meinst...etwa die errors von error_reporting(E_ALL); Das gibt kein error zurück...
flashpixx Geschrieben 15. Juni 2010 Geschrieben 15. Juni 2010 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
Angins Geschrieben 15. Juni 2010 Autor Geschrieben 15. Juni 2010 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.
flashpixx Geschrieben 15. Juni 2010 Geschrieben 15. Juni 2010 Wird denn die Batchdatei ausgeführt? Führe nur einmal die Batchdatei aus, ohne Pipe.
lupo49 Geschrieben 15. Juni 2010 Geschrieben 15. Juni 2010 Setze die weiteren Parameter, die exec() entgegennehmen kann und schaue was in den für Werte stehen. PHP: exec - Manual
flashpixx Geschrieben 15. Juni 2010 Geschrieben 15. Juni 2010 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
Angins Geschrieben 16. Juni 2010 Autor Geschrieben 16. Juni 2010 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?
flashpixx Geschrieben 16. Juni 2010 Geschrieben 16. Juni 2010 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.
Angins Geschrieben 16. Juni 2010 Autor Geschrieben 16. Juni 2010 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
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden