1

我正在尝试notepad在服务器上运行(localhost暂时)。

exec()并且system()函数在例如 write 时工作正常ping 127.0.0.1

但这不起作用(如果我直接在命令提示符下编写命令,则工作正常):

$command = "C:\WINDOWS\system32\notepad.exe";

$result = system($command);

print_r($result);

与. Windows XP_ xampp可能我没有权限,因为该命令是从其他帐户执行的,但我不知道如何检查。

有什么建议吗?

编辑:

如前所述bwoebi,我已经打开了进程,但它们是从不同的用户(SYSTEM)打开的,我看不到应用程序何时打开。所以,我必须解释我的问题:如何更改从 PHP 脚本执行命令时使用的用户?

4

3 回答 3

2

首先,如果您不使用单引号,则需要转义命令字符串中的反斜杠:

$command = "C:\\WINDOWS\\system32\\notepad.exe";

还要注意,如果Apache是​​作为Windows服务运行的,它没有桌面交互权限,所以不能打开GUI,试试在命令行直接用PHP运行脚本。

编辑

用于运行命令的用户是正在运行 PHP 的用户。要更改运行 PHP 的用户,您必须更改运行 Apache 的用户,如果您希望此用户具有桌面交互权限,您必须自己运行 Apache,而不是作为服务运行。

于 2013-04-16T12:27:37.713 回答
0

执行 shell 命令后让进程稍微休眠一下,然后在 TaskManager 中搜索记事本……然后你会看到这是两个不同的用户(你看不到其他用户的记事本)

于 2013-04-16T12:28:30.040 回答
0

记事本是一个 GUI 程序,因此需要激活 Windows TTY。

Ping 是命令行,因此可以由系统直接运行并将结果通过管道传输到调用它的程序中。

如果没有深入了解 os 的工作原理,基本上它不能在 Windows 机器上完成(它可能在 unix 机器上但更困难。)

于 2013-04-16T12:30:11.767 回答