首页 文章

php exec()没有执行命令

提问于
浏览
30

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

nt authority\system

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

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

NOTE 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()函数,所以我不熟悉它的细节 . What is wrong?

我试过用:

  • \\ 而不是 \
    目录上有

  • escapeshellarg()

  • 在目录文件夹名称周围添加了 ""

没运气

Addendum:

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

要么

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

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

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

Edit

即使 exec('notepad.exe'); 也无效 . 有什么必须用 php 配置吗?

2 回答

  • 75

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

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

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

    对于所有有类似问题的人,我的建议是使用该命令 . It will point out all the errors and also tell you info/details about execution.

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

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

  • 0

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

相关问题