为什么不能运行的exec()或系统()功能的可执行文件?(Why cannot run an exe

2019-10-29 14:14发布

我试图运行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脚本执行命令时使用的用户?

Answer 1:

首先,你需要的,如果你不使用单引号逃脱反斜杠在你的命令字符串:

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

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

编辑

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



Answer 2:

让过程有点睡眠执行在任务管理器的shell命令和搜索记事本后......然后你就会看到,这是两个不同的用户(和你没有看到其他用户的记事本)



Answer 3:

注意垫是一个GUI程序,从而需要Windows TTY为活性的。

平是命令行,以便可以通过直接的系统和管道的结果到程序调用它来运行。

随着出进入的是如何OS的工作基本上就不能在Windows机器上做太多细节(它的UNIX机器上的可能,但更困难。)



文章来源: Why cannot run an executable file with exec() or system() functions?