<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Dieser Teil des Codes hat nichts mit dem Inhalt des Artikels zu tun,Nur für Zeichen</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
<hr>
<h1>Warum ist es Windows Unter dem System </span><span><span class="hljs-title function_ invoke__">getmyuid</span></span><span>() nicht verfügbar?Ursachen und Lösungen</h1>
<p>existieren PHP Programmierung,<code></span><span><span class="hljs-title function_ invoke__">getmyuid</span></span><span>()
Oder Umgebungsvariablen lesen:
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'Aktueller Benutzer:'</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>);
Wenn Sie die Benutzer -ID -Informationen von Windows wirklich benötigen, können Sie die COM -Erweiterung verwenden, um die Windows -API aufzurufen, um den SID des aktuellen Benutzers zu erhalten:
</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">'Benutzername:'</span></span><span> . </span><span><span class="hljs-variable">$objItem</span></span><span>->UserName . </span><span><span class="hljs-string">"\n"</span></span><span>;
}
Beachten Sie, dass PHP die COM -Erweiterung aktiviert und nur auf Windows -Systemen ausgeführt werden kann.
Um die Kompatibilität des Codes zwischen verschiedenen Betriebssystemen zu gewährleisten, wird empfohlen, Benutzerinformationen für verschiedene Systeme separat zu verarbeiten:
</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">'Aktueller Benutzer:'</span></span><span> . </span><span><span class="hljs-variable">$user</span></span><span>;
Die PHP -Funktion getMyUid () hängt vom Benutzer -ID -Mechanismus des UNIX/Linux -Systems ab. Es kann nicht in Windows -Systemen verwendet werden, da Windows unterschiedliche Benutzerverwaltungsmethoden annimmt. In dieser Situation sollten Entwickler Windows-spezifische Methoden wie Leseumgebungsvariablen anwenden oder COM-Erweiterungen verwenden, um aktuelle Benutzerinformationen zu erhalten, um plattformübergreifende Benutzeridentifikation zu erreichen.
Das Verständnis der zugrunde liegenden Mechanismen verschiedener Betriebssysteme kann dazu beitragen, robustere und kompatiblere PHP -Code zu schreiben.