执行命令 give top: failed tty get

Ham*_*Nig 4 php ssh centos

执行如下所示的这一行时出现问题。

sudo /usr/bin/env TERM=xterm /usr/bin/php /home/folder/folder/script.php -b val -a 2018-07-01
Run Code Online (Sandbox Code Playgroud)

它给了我一个错误top: failed tty get。当我尝试使用它时,php -f它给了我另一个类似于php --help.

[0] => Array
        (
            [error] => 1
            [return] =>     top: failed tty get


        )
Run Code Online (Sandbox Code Playgroud)

我想要的结果是成功执行命令而不是错误我在 PHP 脚本中使用 SSH 执行此命令。

Rob*_*bie 9

真的可以在这里使用您的 PHP 脚本的副本(根据评论中的要求)进行确认,但基于您提供的内容:

看起来您尝试执行的操作在某些需要 PHP 脚本中的终端的配置中运行“top”。

/home/folder/folder/script.php
<?php

exec('top -n 1 -b', $out, $error);

print_r($out);
Run Code Online (Sandbox Code Playgroud)

被称为

/usr/bin/php /home/folder/folder/script.php
Run Code Online (Sandbox Code Playgroud)

有两种解决方案:

1) 使用上述参数 ( -n 1 -b) 以批处理模式运行一次迭代 - 测试 Centos7。这应该不需要终端并将输出添加到数组中。这可能是您所需要的。但如果它仍然失败:

2) 否则,您可以指定TERM=xterm- 看起来这是您尝试执行的操作,但是您需要在 exec 中指定它,而不是在调用 php 脚本的 shell 中指定。

/home/folder/folder/script.php
<?php

exec('TERM=xterm top -n 1 -b', $out, $error);

print_r($out);
Run Code Online (Sandbox Code Playgroud)

被称为

/usr/bin/php /home/folder/folder/script.php
Run Code Online (Sandbox Code Playgroud)