2

好的,有问题。我的 PHP 脚本工作除了 1 行。
此行尝试使用 执行外部命令exec()

我得到:

警告:exec():无法分叉

我试着寻找答案。几个网站说我必须在cmd.exe. system32我是否这样做syswow64,我不确定。

也不确定要添加什么用户。ISURlime我从get_current_user().

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

它也不允许我使用icacls cmd.exe /grant IUSR:F在 system32 中访问被拒绝)(句柄在 syswow64 中无效

我已经向将要创建文件的文件夹添加了完全访问权限( ISURSYSTEMSERVICENETWORK SERVICElimeEveryone和)。IIS_ISURS我意识到这是矫枉过正,必须削减它。

我将不得不在Windows 7x64(开发机器)和Windows Server 2012(生产)中执行此操作。

我发现的许多示例要么是针对以前的系统,要么没有详细说明。

有人可以帮帮我吗?我需要让脚本正常工作。谢谢

4

1 回答 1

2

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

如果您的 PHP 脚本要在 Windows 操作系统中执行,也许您可​​以查看COM 函数,而不是 exec()。COM 函数可以让您更好地控制您正在尝试做的事情(也许是办公自动化?)

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

一些示例可以在PHP exec() 页面本身中找到。

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

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

谷歌搜索“php WScript.Shell”将产生很多关于该主题的结果。

编辑:另外,您需要将其添加到您的 IIS web.config 中:

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

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

于 2014-07-23T22:30:08.873 回答