2016-12-26 4 views
2

윈도우 7에서 WAMP 서버를 사용 중이며 posix을 PHP에서 사용하려고하지만 작동하지 않고 fatal error:undefined function을 제공하고 있습니다. 이제 저는 알고 싶습니다. 어떻게 windows에 설치할 수 있습니까?윈도우에 'posix'설치하는 방법

Windows에서 사용할 수없는 경우 Windows에서 파일 이름 소유자 이름을 얻는 방법 Windows에서 비슷한 POSIX 기능을 구현할 수있는 곳은 어디에서 읽을 수 있습니까?

+1

posix 함수는 Windows에서만 사용할 수 있습니다. 그들은 리눅스에서만 사용할 수 있습니다. – MacBooc

+0

예 저는 Windows에서 작동하는 다른 함수에 대해 물어 보는 이유를 알고 있습니다. –

+0

기대했던 것과 같은 것이 있는지 모르겠습니다. 창문에 제대로 존재하지 않지만 글로브 기능에 대해 알 수 있습니다. – MacBooc

답변

0

이것은 리눅스 에서처럼 간단하지 않으며 posix는 Windows에서 자주 사용되지 않습니다 (아래의 의견이 많습니다). posix subsystem에 의해 호출 된 POSIX 1.0 구현은 Windows 8부터 사용되지 않지만 더 이상 사용되지 않습니다. 또 다른 옵션은 Win 8 이후에 더 이상 사용되지 않는 (제거 되었습니까?) SFU (Service for Unix)입니다. 단 Windows 10 bash!이이를 대체하려고합니다. 나는 당신이 얼마나 쉽게 그것을 사용할 수 있는지 알 수있을 정도는 아니지만 변화를 가져올 수 있습니다. 마지막으로 Cygwin과 같은 UNIX 환경을 모방하는 데 사용할 수있는 3'd 파티 응용 프로그램이 있지만, 서버가 최적화 관점에서 사용하도록 기대하는 것이 많다고 생각합니다.

제 생각에는 최선의 방법은 C++을 통해 Native Windows 명령을 호출하는 것입니다. 귀하의 질문은 너무 모호해서 제 예제는 다루지 않을 것입니다. 기본적으로 당신이 필요로하는 무슨이다 :

다음 예는 GetSecurityInfo찾아 이것은 msdn docs에서 가져옵니다

파일의 소유자의 이름을 인쇄 할 수 기능을 LookupAccountSid로 사용하는 당신은 익숙해 져야하며 많은 기본 Windows API가 포함되어 있습니다. 그래서 그냥 붙여 넣기를 복사하여 컴파일이 위의 기능을 사용하여 전체 구현

편집 - - 거기에서 당신은 당신이 (예를 위해 필요한 긴 예를 찾을 수 있습니다. PHP에 관한

PHP을, 사용자 ID를 얻기위한 깨끗한 솔루션이 없다. 위와 같이 구현 된 작은 C++ exe를 exec 함수 등을 통해 호출하는 것이 좋습니다.

+0

나는 부정적인 표시의 이유를 이해하지 못했습니다. 나는이 함수가 윈도우가 아니라면 다른 함수를 말해 주도록 분명히 언급했다. 나는 PHP에서 새로운이야 그래서 내가 여기 전문적인 제안을 제안 질문을 게시 이유는 귀하의 대답은 나를 위해 덜 사용하기 때문에 그 C + +에서 나는 PHP에서 알고 싶어요. –

+0

질문을주의 깊게 읽고 대답하십시오. –

+1

'Windows에 설치할 수있는 방법'은 'Windows에 posix를 설치하는 방법'으로 해석 할 수 있으므로 질문에 대한 대답이 명확하지 않고 질문의 나머지 부분이 명확하지 않습니다. 너무 넓습니다. – MacBooc

2

분명히 Windows 자체는 POSIX 운영 체제가 아니기 때문에 표준 WAMP 스택에서 PHP의 POSIX 지원을 사용할 수 없습니다.

해당 Windows는 PHP's Windows Only Extensions입니다. 여기에는 다른 Windows 응용 프로그램에서 수행 할 수있는 대부분의 작업을 수행 할 수있는 .NET 클래스 사용 지원이 포함됩니다.

예를 들어 파일 소유자를 확인하려면 System.IO.File.GetAccessControlas described in the answers to this question을 사용할 수 있습니다. 기존 질문 및 답변을 통해 다른 대부분의 필요 사항을 해결할 수 있습니다.

(필요한 경우 가상 컴퓨터에서 램프 스택으로 전환하는 것이 좋습니다.)


Nitpicker의 코너 :

윈도우 10, 베타 POSIX의 리눅스에 대한 Windows 하위 시스템을 통해 지원, 및 Windows Server 지원 인 Interix 다른 POSIX 기반 서브 시스템의 일부 버전을 제공하지만에 내 지식 중 최고 표준 WAMP 스택은 PHP에서 직접 사용할 수 없습니다.

OS 독립적 확장을 처음 사용하는 경우 불필요한 복잡성을 피하기 위해 실제 호스트 운영 체제 고유의 기능을 사용하는 것이 좋습니다. 예를 들어, NTFS 파티션의 파일에 대한 WSL 소유자 ID를 검색하면 잠재적으로 정보가 손실됩니다. Linux는 Windows SID와는 매우 다른 32 비트 ID 만 지원하기 때문입니다.

면책 조항 : WSL이 실제로 어떤 작업을 수행하는지는 알지 못합니다. 일부 시나리오에서는 실제 문제가 나타나지 않을 수도 있습니다. 필자의 요점은 Windows에서 기본 기능을 사용하거나 진정한 Linux 호스트에서 서비스를 실행하는 것과 비교할 때 불필요한 복잡성이 아니라 사용자의 요구를 충족시킬 수있는 방법을 찾는 것입니다. .

+1

[WSL 파일 시스템 지원] (https://blogs.msdn.microsoft.com/wsl/2016/06/15/wsl-file-system-support/)에서는 WSL 가상 파일 시스템 구현됩니다. * "Windows 파일 시스템은 Linux 파일 시스템과 크게 다릅니다"* 나는 네이티브 구현이 최선의 선택이라는 것에 매우 동의합니다. 호기심 만을위한 링크를 게시했습니다. – IInspectable