簡體   English   中英

如何在Windows中安裝'posix'

[英]How to install 'posix' in windows

我在Windows 7中使用WAMP服務器,並嘗試在php中使用posix函數,但它不起作用並給出fatal error:undefined function 現在我想知道如何在Windows上安裝它。

如果Windows無法使用它,該如何在Windows上知道如何通過id獲取文件所有者的名稱 ,以及在哪里可以閱讀到有關在Windows上實現類似posix功能的信息。

顯然,由於Windows本身不是POSIX操作系統,因此您不能在標准WAMP堆棧中使用PHP的POSIX支持。

Windows等同於PHP的Windows Only Extensions 這包括對使用.NET類的支持,該類允許您執行其他Windows應用程序可以執行的大多數操作。

例如,為了找出文件的所有者,您可以按照此問題的答案中所述使用System.IO.File.GetAccessControl 您可能會發現現有的問題和答案,以解決您可能還有的其他大多數需求。

(如果需要,您可能希望考慮切換到虛擬機上的LAMP堆棧。)


Nitpicker的角落:

Windows 10通過用於Linux的Windows子系統提供beta POSIX支持,並且某些版本的Windows Server支持另一個基於POSIX的子系統Interix,但是據我所知,沒有標准的WAMP堆棧可直接從PHP中獲得這兩個組件。

無論如何,如果您首先使用的是特定於操作系統的擴展,那么為避免不必要的復雜性,幾乎總是最好使用實際主機操作系統的本機功能。 例如,檢索NTFS分區上文件的WSL所有者ID可能會丟失信息,因為Linux僅支持與Windows SID完全不同的32位ID。

免責聲明:我不知道WSL在這種情況下實際上會做什么。 在某些情況下,這很可能不會帶來實際問題。 我的觀點僅僅是,與使用Windows固有的功能或在真正的Linux主機上運行服務(如果您願意)相比,必須找出它的工作方式以確保它能夠滿足您的需求是不必要的麻煩。 。

這並不像在Linux中那樣簡單,並且posix在Windows中也很少使用 (如下面的大量注釋所示)。 盡管從Windows 8開始不推薦使用posix子系統調用POSIX 1.0實現,但是另一個選擇是SFU(Unix服務),從Win 8開始也不再推薦(刪除?),盡管使用了新的Windows 10 bash! 將要替換它-我還不熟悉您是否可以輕松使用它,但是它可能會帶來變化。 最后,您可以使用3d第三方應用程序來模仿UNIX環境(例如Cygwin),但是我認為從優化的角度來看,您的服務器可以使用它們來做些事情。

我認為您最好的選擇是通過C ++調用Windows本機命令。我認為您的問題太含糊了,因此我只講您的示例。 基本上,您需要的是:

下面的示例使用GetSecurityInfoLookupAccountSid函數查找並打印文件所有者的名稱。

該摘自您需要熟悉的msdn文檔 ,並且包含許多本機Windows API。 在該處,您會找到一個很長的需求示例(對於該示例-這是使用上述功能的完整實現,因此只需復制粘貼並進行編譯即可)。

編輯-PHP

關於PHP,沒有干凈的解決方案來獲取用戶ID。 我建議您通過exec函數或類似的函數調用一個如上所述實現的小型C ++ exe。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM