【问题标题】:how to open a new CMD window using PHP如何使用 PHP 打开一个新的 CMD 窗口
【发布时间】:2015-01-10 14:25:46
【问题描述】:

在过去的几天里,我想在 PHP 中编写一些代码来弹出一个 CMD 窗口,而这个 CMD 窗口有一个类似“ping google.com”的命令”并处理它
我不需要 PHP 代码来读取结果,我只希望它运行它 我尝试了一些类似

<?php     
exec('C:\Windows\System32/cmd.exe ping google.com');     
<?

但没有结果(我不知道它是否在后台运行)
所以我读了this,我建立了很多方法,但没有任何效果

我的操作系统是 windows,非常感谢大家:)

【问题讨论】:

  • 首先:你的路径全错了:C:\Windows 应该是 C:\\Windows\\System32System32/cmd.exe 应该是 System32\\cmd.exe。正斜杠也应该在 Windows 上工作,但不要将它们混合在一起,保持一致。另外:PHP 脚本将在哪里运行,您希望提示出现在哪里?
  • @EliasVanOotegem 你能解释更多吗?比如正确的命令是什么?
  • 我不能,还不能。这里没有足够的信息……我不知道您打算如何运行这个 PHP 脚本,以及您希望看到什么。如果您在您的机器上运行此代码,只需执行exec('ping 8.8.8.8'); 无论如何都会打开一个cmd 窗口,而exec('start /B ping 8.8.8.8', $status, $result); 在后台启动进程,让您处理将分配给$result 的输出,然后退出代码在$status
  • 看你之前的问题,你似乎认为这里的人会为你写代码。这不是这个网站的目的:要么你学习编码,要么你花钱请人为你做。这不是一个代码请求网站,它是一个为愿意自己做这项工作的人解决问题的问答网站

标签: php windows cmd


【解决方案1】:

答案是
我搜索了很多找到它:))

<?
execInBackground('start cmd.exe @cmd /k "ping google.com"');



function execInBackground($cmd) { 
    if (substr(php_uname(), 0, 7) == "Windows"){ 
        pclose(popen("start /B ". $cmd, "r"));  
    } 
    else { 
        exec($cmd . " > /dev/null &");   
    } 
}
?>

【讨论】:

  • popen('start /D "'.getenv("PHPRC").'" /B ' . $exec_string, "r");设置工作目录,避免 DLL 加载问题
【解决方案2】:

真正的命令提示符怎么样?这是一个允许 PHP 获取并与真实 cmd 终端动态交互的项目。在这里获取:https://github.com/merlinthemagic/MTS

下载后您只需使用以下代码:

//if you prefer Powershell, replace 'cmd' with 'powershell'
$shellObj    = \MTS\Factories::getDevices()->getLocalHost()->getShell('cmd');

$strCmd1   = 'ping -n 4 www.google.com';
$return1   = $shellObj->exeCmd($strCmd1);

return 将为您提供来自 cmd 的命令 return OR error,就像您坐在控制台前一样。

此外,您可以针对 $shellObj 发出任何您喜欢的命令,该环境在 PHP 脚本的整个生命周期内都会得到维护。所以不用将命令捆绑在脚本文件中,只需使用 exeCmd() 方法一一发出,这样您还可以处理返回和任何异常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-10
    • 1970-01-01
    • 1970-01-01
    • 2022-08-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多