【问题标题】:Execute .exe with php用 php 执行 .exe
【发布时间】:2013-12-26 15:11:45
【问题描述】:

我目前正在使用本地 WAMP 服务器,我想直接从浏览器执行 .exe(以使用命令行控制 AIMP 播放器) 我一直在尝试所有的 PHP 函数来做到这一点,但它们都没有执行 .exe 文件。

使用 exec(),我可以调用“java -jar”或启动 .bat,但是每次尝试 .exe 文件都会失败(即使我在 PHP 中调用了一个启动 .exe 本身的 java 应用程序)。

额外信息: 安全模式已禁用 PHP 5.3.13 阿帕奇 2.2.22

你对我的问题有什么想法吗?

谢谢。

【问题讨论】:

  • 只有在以下情况下才能调用可执行文件 A) 与您的脚本位于同一路径中,或 B) 包含在 Windows PATH 变量中。 shell_exec('some_file.exe');
  • 以什么方式失败?您用来调用它的代码行是什么? PHP 日志中是否有错误消息或其他内容?
  • Ohgodwhy :我尝试将我的程序复制粘贴到我的 PHP 脚本文件夹或编辑我的 Windows 的路径变量,但它仍然不起作用。
  • 大卫:它没有给出任何错误。该命令不起作用。

标签: php exec exe


【解决方案1】:

我建议编写简单的函数来直接从浏览器创建背景exec() 并设置一些输出 - 这可能会显示错误。所以:

function background_exec($command)
{
    if (substr(php_uname(), 0, 7) == "Windows"){
        pclose(popen('start /B ' . $command, 'r'));
    }
    else {
        exec($command . ' 2>&1 > /dev/null &');
    }
}

如您所见,这些东西在 winnix 下都可以使用。在 win 下为 WAMP 调用它是:

$command = 'C:\path_to_your_directory\program.exe > C:\path_to_your_directory\logfile.log';
background_exec($command);

这对我来说很好,不过,我从来没有遇到过以这种方式运行 .exe 文件的问题。

【讨论】:

  • 不幸的是,background_exec('"C:\Program Files (x86)\AIMP3\AIMP3.exe" /STOP'); 仍然没有做任何事情。并且重定向到日志文件只是创建一个空文件。
  • 嗯...您可能尝试通过命令行直接启动它——它有效吗?如果是,问题是您的 WAMP 上的 PHP 执行函数只是不知道如何处理 .exe 扩展名。
【解决方案2】:

我最终选择使用 websockets 来解决我的问题(使用 Ratchet)。像这样,我可以从浏览器调用我的脚本,将我需要的参数传递给可执行文件。

CLI 中的 PHP 似乎对 .exe 文件的 exec() 没有任何问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-26
    • 2018-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-13
    相关资源
    最近更新 更多