Php 执行shell命令并获取实时输出

Php 执行shell命令并获取实时输出,php,linux,ubuntu,Php,Linux,Ubuntu,我试图从PHP执行以下命令,问题是我尝试了“PING”、“netstat-a”和“ls”,它们都工作正常,我得到了输出 Wpscan是一个Wordpress bug扫描器,它是用ruby编写的,我在服务器上安装了它,并使用这个命令使它可以在任何地方执行 sudo ln-s/home/ubuntu/wpscan/wpscan.rb/usr/local/bin/wpscan 正如您所看到的,我在shell上尝试了相同的命令,它运行良好。我不知道PHP代码有什么问题。 $cmd='wpscan-u

我试图从PHP执行以下命令,问题是我尝试了“PING”、“netstat-a”和“ls”,它们都工作正常,我得到了输出

Wpscan是一个Wordpress bug扫描器,它是用ruby编写的,我在服务器上安装了它,并使用这个命令使它可以在任何地方执行
sudo ln-s/home/ubuntu/wpscan/wpscan.rb/usr/local/bin/wpscan

正如您所看到的,我在shell上尝试了相同的命令,它运行良好。我不知道PHP代码有什么问题。

$cmd='wpscan-u www.google.com';
而(@ob_end_flush());//结束所有输出缓冲区(如果有)
$proc=popen($cmd,'r');
回声';
而(!feof($proc))
{
echo-fread($proc,4096);
@冲洗();
}
回声';
?>
更新: 我刚刚在命令末尾添加了以下“2>&1”,得到了以下错误: /home/ubuntu/wpscan/lib/common/common\u helper.rb:6:in
home]:找不到主环境--正在扩展(ArgumentError)
from/home/ubuntu/wpscan/lib/common/common\u helper.rb:6:in
'
从/usr/lib/ruby/2.3.0/rubygems/core\u ext/kernel\u require.rb:55:in
require' 来自/usr/lib/ruby/2.3.0/rubygems/core\u ext/kernel\u require.rb:55:in
require'
from/home/ubuntu/wpscan/lib/wpscan/wpscan\u helper.rb:3:in
' 来自/usr/lib/ruby/2.3.0/rubygems/core\u ext/kernel\u require.rb:55:in
require'
从/usr/lib/ruby/2.3.0/rubygems/core\u ext/kernel\u require.rb:55:in
require'

from/usr/local/bin/wpscan:8:in` 更新2: 我刚刚检查了PHP脚本和shell的用户。 PHP:www-data
Shell:ubuntu

在运行脚本时检查Shell用户是什么,然后在运行脚本时检查apache/php用户是什么……尝试在命令末尾添加
2>&1
,这样输出中就会出现错误消息。您好,Barmar,感谢您的回复。我只是按照你告诉我的做了,并得到了以下错误:/home/ubuntu/wpscan/lib/common/common\u helper.rb:6:in
home]:找不到主环境--正在扩展(ArgumentError)from/home/ubuntu/wpscan/lib/common/common\u helper.rb:6:in
from/usr/lib/ruby/2.3.0/rubygems/core\u ext/kernel\u require.rb:55:in
require'from/usr/lib/ruby/2.3.0/rubygems/core\u ext/kernel\u require.rb:55:in“require”尝试在bash或shi zack6849中运行它,我刚刚从shell中执行了PHP脚本,命令已经成功执行。所以我认为这是PHP用户的问题,对吗?
$cmd = 'wpscan -u www.google.com';


while (@ ob_end_flush()); // end all output buffers if any

$proc = popen($cmd, 'r');
echo '<pre>';
while (!feof($proc))
{
    echo fread($proc, 4096);
    @ flush();
}
echo '</pre>';

?>