Implementieren des Zugriffs auf Dateien auf einem freigegebenen Laufwerk einer Windows-Domäne in PHP
P粉323224129
2023-08-30 23:11:13
<p>Ich habe eine Reihe von Dokumenten auf einem eigenständigen Computer gespeichert, die ich von einem PHP/IIS-Server aus bereitstellen muss. Das Problem besteht darin, dass das Dokumentenlaufwerk mit einem Active Directory-Domänencomputer verbunden ist und der Webserver nicht verbunden ist. Daher bin ich mir nicht sicher, wo ich den authentifizierten AD-Benutzer bereitstellen soll, den PHP für den Zugriff auf das Laufwerk benötigt. </p>
<p>Ich habe einen IIS-Anwendungspool, der PHP aufruft und als neuer Windows-Benutzer ausgeführt wird, den ich erstellt habe (auf „Identität“ für den Anwendungspool und den anonymen Authentifizierungsbenutzer für die Website eingestellt). Ich habe mich als dieser neue Benutzer am Server angemeldet und ein zugeordnetes Netzlaufwerk eingerichtet, aber nach einiger Recherche dachte ich, dass dies eine Sackgasse sei, und las, dass sich der Dienst nicht so bei Windows anmelden würde, dass das zugeordnete Laufwerk bereitgestellt würde. </p>
<p>Nur die Referenzierung anhand der IP-Adresse funktioniert eher, aber ich erhalte Authentifizierungsfehler. Die wichtigste Lösung, die ich online gefunden habe, besteht darin, den Anwendungspool als Benutzer mit Zugriff auf das Laufwerk auszuführen. Ich weiß jedoch nicht, ob das möglich ist, da sich der Server nicht in dieser Windows-Domäne befindet. (Aber ich bin auch kein AD-Experte)</p>
<pre class="brush:php;toolbar:false;">echo shell_exec('whoami'); //Gib den Namen des von mir erstellten Windows-Benutzers aus
echo scandir('\\192.168.1.120\data$'); //Benutzername/Passwort kann nicht gefunden werden
echo trim(shell_exec('dir \\192.168.1.120\data$ 2>&1')); //Der Benutzername oder das Passwort ist falsch
echo scandir('Z:\'); // PHP-Warnung, dass der Pfad nicht gefunden werden kann
echo trim(shell_exec('dir Z: 2>&1')); //Pfad nicht gefunden</pre>
<p>Wenn es keine einfache, nicht hackbare Lösung gibt, könnte ich sehen, ob der Kunde den Webserver in die AD-Domäne stellen könnte, aber ich weiß nicht, ob das unbeabsichtigte Nebenwirkungen auf andere Dienste hätte Server läuft. </p>
如果这些是公开的,并且不需要用户对目录进行身份验证,则不要将它们放在域中。然而,如果您需要某种身份验证或从AD中查找信息,您可以考虑在DMZ中运行Active Directory应用程序模式(ADAM)。您可能需要将相关信息从AD复制到应用程序分区,因为ADAM不会同步标准AD分区。
当然,如果Web服务器与域控制器位于同一网络上,可以将其添加到域中以增加可管理性。