【问题标题】:Two Shell_Exec Command with PHP button but still in the One powershell?两个带有 PHP 按钮的 Shell_Exec 命令但仍在一个 powershell 中?
【发布时间】:2019-05-08 02:35:41
【问题描述】:

我有可以使用 ReadExisting() 获取数据的 Powershell 语法,但问题是...该语法必须在之前强制 php 条件(以及页面加载时的一些 shell_exec 语法)

我尝试使用 powershell 获取 COM1 数据,并使用此代码

cmd powershell

在该图像中,第一个 ReadExisting() 无法声明输出,因为 COM1 中的设备未显示新结果,当设备显示结果时,再次尝试 ReadExisting(),我得到了我想要的。

所以(在我看来)我应该在 PHP 上实现的逻辑是: - 先执行 $port 和 $port.Open() - 之后执行 ReadExisting()。

我正在尝试制作这样的 php 代码

<?php
    $result = shell_exec('powershell $port = New-Object System.IO.Ports.SerialPort COM1,9600,None,8,one ; Get-Variable ;  $port.Open(); $port.ReadExisting() ');

    echo $result 

?>

<form method="post">
    <input type="submit" name="test" id="test" value="RUN" /><br/>
</form>

<?php
    function testfun()
    {
      $result2 = shell_exec('powershell $port.ReadExisting()');
      echo $result2;
    }

    if(array_key_exists('test',$_POST)){
       testfun();
    }
?>

但是按钮没有在 powershell 中显示结果。我可能看到了什么,因为我正在制作两个 shell_exec?,是的,$result 正在工作(我已经在测试它,我可以看到端口连接变量)

是否有可能使用按钮条件制作 continue shell 命令的方法?谢谢你!。

【问题讨论】:

    标签: php shell-exec


    【解决方案1】:

    我认为Powershell 的会议会有所帮助。这类问题通常用那个来解决。会话启动和维护的详细文档可在here

    如果您使用会话,则命令可以具有连续性。

    【讨论】:

    • 抱歉回复晚了。尝试使用会话,但不幸的是我不能,因为此代码将成为本地主机,并且某些计算机在进行会话时出错。感谢您的回复,该文档对我真的很有帮助
    【解决方案2】:

    使用这个:(2&gt;&amp;1 in shell_exec

    $result2 = shell_exec('powershell $port.ReadExisting() 2>&1');
    echo $result2;
    

    &gt;&amp; 是将流重定向到另一个文件描述符的语法 - 0 是标准输入,1 是标准输出,2 是标准错误。

    2指进程的第二个文件描述符,即stderr。

    &gt; 表示重定向。

    &amp;1 表示重定向的目标应该与第一个文件描述符的位置相同,即stdout。

    【讨论】:

    • 谢谢您的回复,先生!尝试您的解决方案似乎有效,但现在我在回显 result2 时遇到错误。 “你不能在空值表达式上调用方法。在 line:1 char:1 + $port.ReadExisting() ; + ~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : InvokeMethodOnNull"
    • 尝试在 result2 上使用 GetVariable,但似乎缺少变量,这就是为什么我不能调用 $port
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-26
    • 2016-07-16
    • 2014-05-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多