Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

Sorry bin mir nicht sicher was du meinst...etwa die errors von

error_reporting(E_ALL);

Das gibt kein error zurück...

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

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.

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

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?

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.

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.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.