Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何安装&x27;posix&x27;在窗户里_Php_Windows_Wamp_Posix - Fatal编程技术网

Php 如何安装&x27;posix&x27;在窗户里

Php 如何安装&x27;posix&x27;在窗户里,php,windows,wamp,posix,Php,Windows,Wamp,Posix,我在Windows7中使用WAMP服务器,并尝试在php中使用posix函数,但它不起作用,并给出了致命错误:未定义函数。现在我想知道如何在windows上安装它 如果它不适用于windows,我将如何知道如何在windows上通过id获取文件所有者名称,以及在哪里可以阅读有关在windows上实现类似posix功能的信息。这不像在Linux中那么简单,而且posix在windows中的使用也不常见(如下面大量评论所示)。有一个由调用的POSIX 1.0实现,但自Windows 8以来,该实现已

我在Windows7中使用WAMP服务器,并尝试在php中使用
posix
函数,但它不起作用,并给出了
致命错误:未定义函数
。现在我想知道如何在windows上安装它


如果它不适用于windows,我将如何知道如何在windows上通过id获取文件所有者名称,以及在哪里可以阅读有关在windows上实现类似posix功能的信息。

这不像在Linux中那么简单,而且posix在windows中的使用也不常见(如下面大量评论所示)。有一个由调用的POSIX 1.0实现,但自Windows 8以来,该实现已被弃用。另一个选项是SFU(Unix服务),自Win 8以来,它也被弃用(删除了?),尽管一个新的将要取代它-我不太熟悉,不知道您可以多么容易地使用它,但它可能会带来变化。最后,还有一个第三方应用程序,您可以使用它来模拟像Cygwin这样的UNIX环境,但我认为从优化的角度来看,希望您的服务器使用它们有点过分

在我看来,你最好的办法是通过C++调用本地Windows命令。在我看来,你的问题有点模糊,所以我只会只提到你的例子。基本上你需要的是:

以下示例使用GetSecurityInfoLookupAccountSid函数查找并打印文件所有者的名称

这是从您需要熟悉的中获取的,它包含许多本机Windows API。在这里,您将找到一个很长的示例,说明您需要什么(例如,这是一个使用上述函数的完整实现,所以只需复制粘贴并编译即可)

编辑-PHP


关于PHP,没有获得用户ID的干净解决方案。如果需要的话,我建议通过执行函数或一些这样的./P>>P>调用一个小的C++ exe,显然,因为Windows的专有不是POSIX操作系统,所以不能在标准的WAMP栈中使用PHP的POSIX支持。 与Windows等效的是。这包括对使用.NET类的支持,它允许您执行任何其他Windows应用程序都可以执行的大多数操作

例如,为了找到文件的所有者,您可以使用
System.IO.file.GetAccessControl
。您可能会找到现有的问题和答案,以满足大多数其他需求

(您可能更愿意考虑在必要时在虚拟机上切换到LAMP堆栈)。


挑剔的角落:

Windows 10通过Windows Linux子系统提供了对POSIX的beta支持,一些版本的Windows Server支持Interix,这是另一个基于POSIX的子系统,但据我所知,没有标准的WAMP堆栈可以直接从PHP获得这两个版本

在任何情况下,如果您首先使用的是特定于操作系统的扩展,那么为了避免不必要的复杂性,最好使用实际主机操作系统的本机功能仅支持32位ID,与Windows SID非常不同


免责声明:我不知道WSL在这种情况下实际做了什么;在某些情况下,这完全可能不会出现实际问题。我的观点只是,与使用本机功能来赢得比赛相比,必须了解它是如何工作的,以确保它满足您的需要是一个不必要的复杂问题dows,或者在正版Linux主机上运行您的服务,如果您愿意的话。

posix功能在windows上不可用,它们仅在Linux上可用。是的,我知道这就是为什么我询问另一个可以在windows上工作的功能的原因。我不确定是否存在您期望的功能,我的意思是它在windows上不正确存在,但是您可以查看glob函数OK谢谢您的帮助让我查看另一个资源我不明白您负面分数的原因。我已经清楚地提到,如果此函数不适用于windows,请告诉我另一个函数。我是php新手,我找不到更好的方法,这就是为什么我在这里发布问题以征求专业人士的建议第二,你的答案是少用我,因为它的C++我想知道在PHP。“我如何安装它在Windows”可以解释“我如何安装Windows上的POSIX”,所以他回答你,其余的问题不清楚,我是说太多了。wide@MuhammadHamzaNisar我的意思是在Windows上实现所有Posix太广泛了问题来反映我的意思。如果你说得更简洁一些,我将取消反对票。Windows对POSIX的支持相当全面,其中
fork
是一个显著的例外。@我不认为这是真的。POSIX函数很多,虽然我还没有做过调查,但我相当肯定有很多是这样的当然,除了安装像Cygwin这样的第三方库之外,Windows上不可用。进程间信号是Windows缺少的另一个主要POSIX功能,也是可继承的filenos,它可以使用select()将几乎所有设备完全当作文件、伪终端、行缓冲来处理在除网络套接字以外的任何其他应用程序上,等等。提供了关于WSL虚拟文件系统如何实现的深入介绍。由于“Windows文件系统与Linux文件系统有很大不同”,我非常同意,本机实现是最好的选择。发布此链接仅供好奇人士使用。