현재 위치: > 최신 기사 목록> Windows에서 GetMyUid ()를 사용할 수없는 이유는 무엇입니까? 원인과 솔루션

Windows에서 GetMyUid ()를 사용할 수없는 이유는 무엇입니까? 원인과 솔루션

M66 2025-07-28
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 코드 의이 부분은 기사의 내용과 관련이 없습니다.,표지판 만</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>

<hr>

<h1>왜 그런가? Windows 시스템에서 </span><span><span class="hljs-title function_ invoke__">getmyuid</span></span><span>() 사용할 수 없습니다?원인과 솔루션</h1>

<p>존재하다 PHP 프로그램 작성,<code></span><span><span class="hljs-title function_ invoke__">getmyuid</span></span><span>()

또는 환경 변수 읽기 :

 </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'현재 사용자:'</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>);

2. COM 객체를 사용하여 현재 사용자 SID (Advanced)를 얻으십시오.

Windows의 사용자 ID 정보가 실제로 필요한 경우 COM 확장자를 사용하여 Windows API를 호출하여 현재 사용자의 SID를 얻을 수 있습니다.

 </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">'사용자 이름:'</span></span><span> . </span><span><span class="hljs-variable">$objItem</span></span><span>->UserName . </span><span><span class="hljs-string">"\n"</span></span><span>;
}

이를 위해서는 COM 확장을 활성화하기 위해 PHP가 필요하며 Windows 시스템에서만 실행될 수 있습니다.

3. 교차 플랫폼 코드 제안

다른 운영 체제 간의 코드의 호환성을 보장하기 위해 다른 시스템에 대해 사용자 정보를 별도로 처리하는 것이 좋습니다.

 </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">'현재 사용자:'</span></span><span> . </span><span><span class="hljs-variable">$user</span></span><span>;

요약

PHP 함수 getMyUid () 는 UNIX/Linux 시스템의 사용자 ID 메커니즘에 따라 다릅니다. Windows는 다른 사용자 관리 방법을 채택하기 때문에 Windows Systems에서는 사용할 수 없습니다. 이러한 상황에 직면하여 개발자는 환경 변수를 읽거나 COM 확장자를 사용하여 현재 사용자 정보를 얻기 위해 Cross-Platform 호환 사용자 식별과 같은 Windows 특정 방법을 채택해야합니다.

다양한 운영 체제의 기본 메커니즘을 이해하면보다 강력하고 호환 가능한 PHP 코드를 작성하는 데 도움이 될 수 있습니다.