2016-12-26 47 views
2

我在Windows 7中使用WAMP服务器,并试图在php中使用posix函数,但它不起作用,并给出fatal error:undefined function。现在我想知道,我可以如何在Windows上安装它。如何在windows中安装'posix'

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

+1

POSIX功能不可用在Windows上,他们只能在Linux上 – MacBooc

+0

是啊,我知道,这就是为什么林询问另一个功能将在Windows –

+0

工作,我不知道的东西存在像你预期的,我的意思是它不在窗口上不存在正确的方式,但你可以看到关于glob功能 – MacBooc

回答

0

这不是在Linux作为简单,POSIX不平凡在Windows使用(如下的评论过多提示)。有一个由posix subsystem调用的POSIX 1.0实现,虽然这从Windows 8开始已被弃用。另一种选择是SFU(Unix服务),自Win 8以来也被弃用(删除?),尽管新的Windows 10 bash!将取代它 - 我不太熟悉,不知道你可以轻松使用它,但它可能会带来变化。最后,你可以使用三方应用来模仿像Cygwin这样的UNIX环境,但我认为期望你的服务器从优化的角度来使用它们有点多。

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

下面的示例使用GetSecurityInfo执行LookupAccountSid功能来查找和打印

这是从msdn docs采取了文件的所有者的名下您需要熟悉并包含许多本机Windows API。在那里,你会发现你需要什么(对于例如长期例子 - 这是使用上述功能的全面实施,所以只要复制粘贴,并编译

编辑 - PHP

关于PHP,如果你需要这个,通过执行函数或者其他方式调用一个小的C++ exe文件,我建议你调用一个小的C++ exe文件

+0

我不明白你的负面标记的原因。我明确提到,如果这个函数不适用于Windows,请告诉我另一个函数。我是新来的PHP我找不到更好的方式,这就是为什么我发布问题在这里得到专业人士的建议和你的答案对我来说少用,因为它在c + +我想知道在PHP中。 –

+0

仔细阅读问题然后给出答案。 –

+1

'我怎么可以在Windows上安装'可以解释为'我怎样才能在窗户上安装posix',所以他回答了你的问题,其余的问题不清楚,我的意思是太宽了 – MacBooc

2

显然,由于Windows本身并不是一个POSIX操作系统,您不能在标准WAMP堆栈中使用PHP的POSIX支持。

Windows相当于PHP's Windows Only Extensions。这包括对使用.NET类的支持,它允许您执行任何其他Windows应用程序可以执行的大部分操作。

例如,为了找出一个文件的所有者,您可以使用System.IO.File.GetAccessControlas described in the answers to this question。您可能会找到现有的问题和答案来解决您可能遇到的大多数其他需求。

(如果需要,您可能更愿意考虑切换到虚拟机上的LAMP堆栈。)


都舍不得亏的的角落:

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

在任何情况下,如果您首先使用特定于操作系统的扩展,几乎总是会优先使用本机适用于实际主机操作系统的功能,以避免不必要的复杂情况。例如,检索NTFS分区上文件的WSL所有者ID可能会丢失信息,因为Linux仅支持32位ID,与Windows SID非常不同。

声明:我不知道WSL实际上在这种情况下做了什么;在某些情况下,这完全有可能不会出现实际问题。我的观点仅仅是,为了确保它能够满足您的需求,必须了解它的工作方式,与使用Windows本机功能或在真正的Linux主机上运行服务相比,这是一个不必要的复杂情况,如果这是您的偏好。

+1

[WSL文件系统支持](https://blogs.msdn.microsoft.com/wsl/2016/06/15/wsl-file-system-support/)深入介绍了WSL虚拟文件系统已实施。由于*“Windows文件系统与Linux文件系统有很大差异”*我非常同意,本机实现是最佳选择。只发布好奇心的链接。 – IInspectable