php exec()没有执行命令

时间:2013-07-29 00:22:09

标签: php windows exec

我尝试将exec()'whoami'一起使用来检查它是否有效并且我得到了

的结果
nt authority\system

现在我需要使用.exe通过php函数运行参数exec()

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


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

> ..\..\some_file.exe folder="C:\path_to_folder" param=1.xml report=2.xml

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

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

什么都没发生。这是我第一次使用exec()函数,所以我不熟悉它的细节。 出了什么问题?

我尝试使用:

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

没有运气

附录:

echo exec($command)  // echos < .... why?

exec($command, $output);
print_r($output);        // Array()

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

但是来自php的同一个电话甚至都不会调用该程序。

修改

即使exec('notepad.exe');无效。可能需要使用php配置完成某些事情吗?

2 个答案:

答案 0 :(得分:77)

我已经说过我是exec()函数的新手了。在做了一些挖掘之后,我遇到了2>&1,需要在exec()的命令末尾添加。{/ p>

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

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

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

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

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

答案 1 :(得分:0)

您也可以尝试提供您尝试运行的二进制文件的完整路径。这在尝试使用ImageMagick时解决了我的问题。