我试图运行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脚本执行命令时使用的用户?
首先,你需要的,如果你不使用单引号逃脱反斜杠在你的命令字符串:
$command = "C:\\WINDOWS\\system32\\notepad.exe";
还要注意,如果Apache是运行作为Windows服务,它没有桌面交互的权限,所以它不能打开一个GUI,尝试直接与PHP在命令行中运行该脚本。
编辑
用于运行命令的用户是运行PHP的用户。 要改变运行PHP的用户,你就必须改变运行Apache的用户, 如果您希望此用户具有桌面交互的权限,你必须自己运行Apache和不作为服务。
让过程有点睡眠执行在任务管理器的shell命令和搜索记事本后......然后你就会看到,这是两个不同的用户(和你没有看到其他用户的记事本)
注意垫是一个GUI程序,从而需要Windows TTY为活性的。
平是命令行,以便可以通过直接的系统和管道的结果到程序调用它来运行。
随着出进入的是如何OS的工作基本上就不能在Windows机器上做太多细节(它的UNIX机器上的可能,但更困难。)