【问题标题】:Running a cmd through PhP通过 PhP 运行 cmd
【发布时间】:2017-02-18 14:03:51
【问题描述】:

TL;DR:我正在尝试在 PhP 上运行基于 Web 的服务器。我知道 PsExec 可以工作,但它看起来有问题。如果有人得到比 PsExec 更有效的方法,我愿意尝试。 (或者潜在的修复?)

到目前为止,我已经尝试了很多 方法,包括:

exec()
passthru()
system()
shell_exec()

这些都不起作用。我的猜测是他们可以通过 CMD执行 ipconfig /all 之类的命令(在服务器上运行良好),然后将其上传到站点。换句话说,执行它,等待输出,发送到服务器。

问题是:

我想运行一个 .bat/.exe(我可以制作一个 .bat 的 exe),而不是等待它,它必须保持打开状态,因为它是一个服务器游戏。

加入游戏的端口(7777)是完全开放的,手动运行允许我加入。所以我真的只需要通过一个 PhP 页面来运行它。

我尝试过使用 PsExec,但由于某种原因,它与 teamviewer 有很多错误?我认为这是因为它让我登录了一个“不同的”窗口会话......

所以呀!如果您对 PsExec 有任何建议,或者您对我有其他建议,请继续,让我开心!

【问题讨论】:

    标签: php batch-file cmd server psexec


    【解决方案1】:

    在 Windows 上,您可以使用 wmic process call create 来运行进程而不是等待:

    <?php
    $app = "notepad.exe";
    $cmd = 'wmic process call create "'.$app.'"';
    $output = shell_exec($cmd);
    

    【讨论】:

    • 我试过你的东西,我想我可能做错了?我制作了一个新的 .bat,并在 cmd(“START command.bat”)中运行,它说:$app 未被识别为实习生命令/外部程序(法语)。
    • 没关系!我很笨......我把你的东西放在我的代码中,它似乎可以工作?我的意思是,它没有给我一个错误,但它也没有打开任何东西。手动运行它!
    • 您可能想用您的批处理文件替换 notepad.exe(或者您可以使用完整的命令并绕过批处理文件)。
    • 意识到我在示例中犯了一个错误并在单引号中包含了一个变量,我现在已经更正了
    • 是的,当我尝试它时,我发现很快^^也,感谢您的快速回复。到目前为止我已经尝试过:$app = '"C:\Program Files (x86)\Steam\steamapps\common\Terraria\Terraria.exe"'; $cmd = 'wmic process call create ' . $app; $output = shell_exec($cmd); 应该打开 terraria.exe (一个游戏),当我在 cmd 中运行它时效果很好,但当我进入我的网页时却不行(如上面的代码) .我还尝试了记事本($app = 'notepad.exe'; 并评论了之前的那个),可悲的是没有工作
    猜你喜欢
    • 1970-01-01
    • 2010-10-16
    • 2019-01-28
    • 2021-05-18
    • 2016-06-03
    • 1970-01-01
    • 2011-07-12
    • 1970-01-01
    相关资源
    最近更新 更多