PHP Datei per Script auf Netzlaufwerk kopieren

M

mw197

Gast
Hallo Leute,

ich benötige bitte einmal einen Rat von euch.

Folgendes Szenario:
Es gibt im Netzwerk einen Webserver der das Intranet hostet (Debian 7.8 mit PHP 5.6 und MySQL 5.6). Auf diesem Server soll nun eine weitere Anwendung laufen, die von dem System aus auf einen Windows-Server (Domänen Controller) eine Datei abspeichern muss.

Ich würde mir jetzt den Befehl copy aussuchen aber wie kann ich bitte mit PHP von Linux aus auf ein Windows-Netzlaufwerk zugreifen?
Hat dort jemand eine Idee, wie ich das bewerkstelligen kann?
Mein Problem dabei ist halt die Frage nach dem Benutzer und Passwort, das für Schreibzugriff auf das Verzeichnis benötigt wird.

Jemand eine Idee?

Danke im Voraus!
 
Mounte das Netzlaufwerk des Windows Servers permanent in der Linux-Kiste (per Samba oder, falls irgend möglich, per NFS). Danach kannst du den Mount Point behandeln wie einen lokalen Ordner.
 
Daaron schrieb:
Mounte das Netzlaufwerk des Windows Servers permanent in der Linux-Kiste (per Samba oder, falls irgend möglich, per NFS). Danach kannst du den Mount Point behandeln wie einen lokalen Ordner.
Perfekt, das klappt ja wirklich problemlos. Habe es wie folgt gemacht:

Laufwerk mounten:
Code:
//10.50.10.22/SYSVOL /media/SYSVOL cifs username=websrv04,password=geheim,iocharset=utf8,sec=ntlm  0 0

Damit ist das Laufwerk gemountet. Im Verzeichnis /usr/bin/ liegt ein .sh Script das ich per PHP wie folgt anstoße:
Code:
passthru('sudo /usr/bin/copyMedDB.sh', $retval);

Damit das Script ausgeführt werden kann, muss zum Einen sudo installiert sein, der CHMOD muss das Ausführen erlauben (ich habe dort 744) und in der Datei /etc/sudoers muss folgender Eintrag ergänzt werden. Der Eintrag erlaubt es dem WWW-data-User das Script als root auszuführen:

Code:
www-data ALL=(ALL) NOPASSWD: /usr/bin/copyMedDB.sh

Dann läuft es echt klasse. Musste zwar jetzt einige Zeit noch probieren aber das ist das Minimum was gemacht werden muss und es klappt spitze. Habe den Server extra nochmal ganz frisch in einer VM installiert und getestet. Wenn man das macht, läuft es sauber durch.
Problem damit schon gelöst und ein großes Danke an euch!

LG mw197
 
Zuletzt bearbeitet:
Ich würde einfach eine rein PHP-basierte Lösung anstreben. Ich würde die Quelldatei sequentiell per PHP auslesen und in den Zielordner schreiben. Wenn die Datei klein genug ist, dann könnte man auch in einem Abwasch alles aus der Quelle lesen und dann gebündelt ins Ziel schreiben.

Außerdem sollte man den Apache nicht konstant als www-data laufen lassen. Wenn man einen Prefork-MPM verwendet, dann sollte man ihn durch MPM-ITK ersetzen. Dazu noch 4 kleine Zielen in der VHost Config, und dieser Teil des Apache läuft mit den Rechten eines anderen Users. Wenn statt dessen ein Threaded MPM wie Worker oder Event verwendet wird, dann sollte hier schlichtweg auf SuExec zurückgegriffen werden. PHP lässt man dann über PHP-FPM laufen und kann dort zusätzlich noch einmal die Rechte voreinstellen.
 
Zurück
Oben