我正在尝试在服务器上运行notepad
(暂时为localhost
)。
exec()
时, system()
和ping 127.0.0.1
函数正常工作。
但这不起作用(如果我在命令提示符中直接编写命令,则工作正常):
$command = "C:\WINDOWS\system32\notepad.exe";
$result = system($command);
print_r($result);
将Windows XP
与xampp
一起使用。可能我没有权限,因为该命令是从其他一些帐户执行的,但我不知道如何检查这个。
有任何建议吗?
修改:
正如bwoebi
所说,我已经打开了进程,但它们是从另一个用户(SYSTEM)打开的,我看不到应用程序何时打开。所以,我必须解释一下我的问题:如何更改从PHP脚本执行命令时使用的用户?
答案 0 :(得分:1)
如果您不使用单引号,首先需要转义命令字符串中的反斜杠:
$command = "C:\\WINDOWS\\system32\\notepad.exe";
另请注意,如果Apache作为Windows服务运行,则它没有桌面交互权限,因此无法打开GUI ,请尝试在命令行上直接使用PHP运行脚本
编辑
用于运行命令的用户是运行PHP的用户。要更改运行PHP的用户,您必须更改运行Apache的用户,如果您希望此用户拥有桌面交互权限,则您必须自己运行Apache而不是服务。
答案 1 :(得分:0)
让程序在执行shell命令后稍微睡眠并在TaskManager中搜索记事本...然后你会看到这是两个不同的用户(你没有看到其他用户的记事本)
答案 2 :(得分:0)
Note pad是一个GUI程序,因此需要Windows TTY处于活动状态。
Ping是命令行,因此可以直接由系统运行,并将管道输入调用它的程序。
如果没有深入了解操作系统的工作方式,基本上无法在Windows机器上完成(它可能在unix机器上完成但更难。)