<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Cette partie du code n'a rien à voir avec le contenu de l'article,Pour les signes seulement</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
<hr>
<h1>Pourquoi est-ce Windows Sous le système </span><span><span class="hljs-title function_ invoke__">getmyuid</span></span><span>() pas disponible?Causes et solutions</h1>
<p>exister PHP Programmation,<code></span><span><span class="hljs-title function_ invoke__">getmyuid</span></span><span>()
Ou lire les variables d'environnement:
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'Utilisateur actuel:'</span></span><span> . </span><span><span class="hljs-title function_ invoke__">getenv</span></span><span>(</span><span><span class="hljs-string">'USERNAME'</span></span><span>);
Si vous avez vraiment besoin des informations de l'ID utilisateur de Windows, vous pouvez utiliser l'extension COM pour appeler l'API Windows pour obtenir le SID de l'utilisateur actuel:
</span><span><span class="hljs-variable">$objWMI</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title function_ invoke__">COM</span></span><span>(</span><span><span class="hljs-string">'winmgmts://'</span></span><span>);
</span><span><span class="hljs-variable">$colItems</span></span><span> = </span><span><span class="hljs-variable">$objWMI</span></span><span>-></span><span><span class="hljs-title function_ invoke__">ExecQuery</span></span><span>(</span><span><span class="hljs-string">"Select * from Win32_ComputerSystem"</span></span><span>);
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$colItems</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$objItem</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'nom d'utilisateur:'</span></span><span> . </span><span><span class="hljs-variable">$objItem</span></span><span>->UserName . </span><span><span class="hljs-string">"\n"</span></span><span>;
}
Notez que cela nécessite PHP pour activer l'extension COM et ne peut fonctionner que sur les systèmes Windows.
Afin d'assurer la compatibilité du code entre différents systèmes d'exploitation, il est recommandé de traiter séparément les informations de l'utilisateur pour différents systèmes:
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">strtoupper</span></span><span>(</span><span><span class="hljs-title function_ invoke__">substr</span></span><span>(PHP_OS, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">3</span></span><span>)) === </span><span><span class="hljs-string">'WIN'</span></span><span>) {
</span><span><span class="hljs-variable">$user</span></span><span> = </span><span><span class="hljs-title function_ invoke__">getenv</span></span><span>(</span><span><span class="hljs-string">'USERNAME'</span></span><span>);
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-variable">$user</span></span><span> = </span><span><span class="hljs-title function_ invoke__">posix_getpwuid</span></span><span>(</span><span><span class="hljs-title function_ invoke__">posix_getuid</span></span><span>())[</span><span><span class="hljs-string">'name'</span></span><span>];
}
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'Utilisateur actuel:'</span></span><span> . </span><span><span class="hljs-variable">$user</span></span><span>;
La fonction PHP getMyUID () dépend du mécanisme d'ID utilisateur du système UNIX / Linux. Il ne peut pas être utilisé dans les systèmes Windows car Windows adopte différentes méthodes de gestion des utilisateurs. Face à cette situation, les développeurs devraient adopter des méthodes spécifiques à Windows, telles que les variables d'environnement de lecture ou l'utilisation d'extensions de com pour obtenir des informations utilisateur actuelles, pour obtenir l'identification utilisateur compatible multiplateforme.
Comprendre les mécanismes sous-jacents de différents systèmes d'exploitation peut aider à écrire un code PHP plus robuste et compatible.