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 Zitieren
flashpixx Geschrieben 15. Juni 2010 Geschrieben 15. Juni 2010 Poste die Ausgaben des error.log. Meine Glaskugel ist nicht greifbar Zitieren
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... Zitieren
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 Zitieren
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. Zitieren
flashpixx Geschrieben 15. Juni 2010 Geschrieben 15. Juni 2010 Wird denn die Batchdatei ausgeführt? Führe nur einmal die Batchdatei aus, ohne Pipe. Zitieren
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 Zitieren
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 Zitieren
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? Zitieren
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. Zitieren
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 Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.