警告:exec():无法分叉


Warning: exec(): Unable to fork

OK,有问题。我的PHP脚本工作,除了1行。
这一行尝试用exec()执行一个外部命令。

:

警告:exec(): cannot to fork

我试着寻找一个答案。几个网站说我必须设置cmd.exe的权限。我在system32还是syswow64中这样做,我不确定。

也不确定添加什么用户。ISUR或用户(lime)我从get_current_user()

Windows不允许我将任何用户添加到安全列表(右键单击文件,属性,安全,编辑)。

它也不会让我使用icacls cmd.exe /grant IUSR:F (access denied in system32)(句柄在syswow64无效)

我已经添加了完整的访问权限(ISUR, SYSTEM, SERVICE, NETWORK SERVICE, lime, EveryoneIIS_ISURS)到将创建文件的文件夹。我意识到这有点小题大做了,必须删减。

我将不得不在Windows 7x64 (dev machine) &Windows Server 2012(生产)。

我发现的许多例子要么是针对以前的系统,要么没有深入到足够的细节。

有人能帮帮我吗?我需要让脚本工作。由于

您没有提供足够的信息来回答您的问题…

如果你的PHP脚本要在Windows操作系统中执行,也许你可以看看COM函数,而不是exec()。COM函数将给你更多的方式来控制你想要做的事情(也许是办公自动化?)

COM比exec()强大得多,因为它允许您控制生成的应用程序窗口本身,如果有的话。例如,您可以使用不可见窗口或最小化窗口启动新进程。

一些例子可以在PHP的exec()页面中找到。

基本上,您可以执行以下操作来运行应用程序:

$shell = new COM("WScript.Shell");
$shell->Run("notepad.exe");
$shell = null;

谷歌"php WScript。Shell"将会得到很多关于这个主题的结果。

Edit:另外,您需要将此添加到IIS web.config:

<identity impersonate="true" userName="youruser" password="yourpass"/>`

这将设置IIS在启动进程时模拟的用户。