php exec()没有执行命令

Bri*_*ian 34 php windows exec

我试图用exec()'whoami'来检查它是否有效,我得到了结果

nt authority\system
Run Code Online (Sandbox Code Playgroud)

现在我需要运行.exe带有phpvia exec()函数参数的文件.

我在命令提示符下尝试了这个,它实际上运行带有给定参数的程序.这是示例命令.


注意 exe文件获得3个输入(文件夹,file_name,report_file_nmae)

> ..\..\some_file.exe folder="C:\path_to_folder" param=1.xml report=2.xml
Run Code Online (Sandbox Code Playgroud)

但是当我从php文件中运行此命令时:

exec('..\..\some_file.exe folder="C:\path_to_folder" param=1.xml report=2.xml');
Run Code Online (Sandbox Code Playgroud)

一切都没有发生.这是我第一次使用exec()函数,所以我不熟悉它的细节.怎么了?

我试过用:

  • \\ 代替 \
  • escapeshellarg() 在目录上
  • 添加""了目录文件夹名称

没运气

附录:

echo exec($command)  // echos < .... why?
Run Code Online (Sandbox Code Playgroud)

要么

exec($command, $output);
print_r($output);        // Array()
Run Code Online (Sandbox Code Playgroud)

我甚至将文件的权限更改为对所有用户的完全控制权.如果我从中调用该程序command prompt,我可以看到时钟旁边出现的图标.

但同样的呼叫php甚至都不会调用该程序.

编辑

即使exec('notepad.exe');不工作.php可能需要对配置做些什么?

Bri*_*ian 80

我已经说过我是新手了exec().在做了一些挖掘之后,我遇到了2>&1需要在命令结束时添加的东西exec().

感谢您@mattosmat在评论中指出它.我没有立刻尝试这个,因为你说它是Linux命令,我在Windows上.

所以,我发现,该命令实际上是在后端执行的.这就是我无法看到它实际运行的原因,我期待这种情况发生.

对于所有有类似问题的人,我的建议是使用该命令.它将指出所有错误,并告诉您有关执行的信息/详细信息.

exec('some_command 2>&1', $output);
print_r($output);  // to see the response to your command
Run Code Online (Sandbox Code Playgroud)

感谢所有帮助人员,我很感激;)

  • 了解这一点有很大帮助.无法弄清楚为什么我没有得到我的回复.谢谢. (3认同)
  • 添加 2&gt;&amp;1 也对我有帮助。有人能解释一下这是什么意思吗? (2认同)
  • @RakeshK - '2&gt;&amp;1' 用于将错误重定向到标准 IO。最重要的是命令字符串末尾的“&amp;”,它告诉终端不要等待响应。 (2认同)