Implémentation de l'accès aux fichiers sur un lecteur partagé de domaine Windows en PHP
<p>J'ai un tas de documents stockés sur une machine autonome que je dois servir à partir d'un serveur PHP/IIS. Le problème est que le lecteur de documents est connecté à une machine de domaine Active Directory et que le serveur Web n'est pas connecté. Je ne sais donc pas où fournir l'utilisateur AD authentifié dont PHP a besoin pour accéder au lecteur. </p>
<p>J'ai un pool d'applications IIS appelant PHP, exécuté en tant que nouvel utilisateur Windows que j'ai créé (défini sur "Identité" pour le pool d'applications et sur l'utilisateur d'authentification anonyme pour le site Web). Je me suis connecté au serveur en tant que nouvel utilisateur et j'ai configuré un lecteur réseau mappé, mais après quelques recherches, j'ai pensé que c'était une impasse ; j'ai lu que le service ne se connecterait pas à Windows de manière à monter le lecteur mappé. </p>
<p>Le référencement uniquement par adresse IP est plus efficace, mais je reçois des erreurs d'authentification. La principale solution que j'ai trouvée en ligne consiste à exécuter le pool d'applications en tant qu'utilisateur ayant accès au lecteur, mais je ne sais pas si cela est possible puisque le serveur n'est pas dans ce domaine Windows. (Mais je ne suis pas non plus un expert AD)</p>
<pre class="brush:php;toolbar:false;">echo shell_exec('whoami'); //Affiche le nom de l'utilisateur Windows que j'ai créé
echo scandir('\\192.168.1.120\data$'); //Impossible de trouver le nom d'utilisateur/mot de passe
echo trim(shell_exec('dir \\192.168.1.120\data$ 2>&1')); //Le nom d'utilisateur ou le mot de passe est incorrect
echo scandir('Z:\'); // PHP avertissant que le chemin est introuvable
echo trim(shell_exec('dir Z: 2>&1')); //chemin introuvable</pre>
<p>S'il n'existe pas de solution simple et sans piratage, je pourrais voir si le client pourrait placer le serveur Web dans le domaine AD, mais je ne sais pas si cela aurait des effets secondaires involontaires sur d'autres services. le serveur est en cours d'exécution. </p>