php shell_exec()输出以获取文本文件

php shell_exec()输出以获取文本文件,php,command-line,exec,shell-exec,Php,Command Line,Exec,Shell Exec,我试图在Centos计算机上运行rate-c 192.168.122.0/24命令,并使用shell_exec('rate-c 192.168.122.0/24')命令将该命令的输出写入文本文件;还是不走运 如果不需要PHP,可以在shell中运行它: rate -c 192.168.122.0/24 > file.txt 如果必须从PHP运行它: shell_exec('rate -c 192.168.122.0/24 > file.txt'); “>”字符将命令的输出重定向到

我试图在Centos计算机上运行
rate-c 192.168.122.0/24
命令,并使用
shell_exec('rate-c 192.168.122.0/24')
命令将该命令的输出写入文本文件;还是不走运

如果不需要PHP,可以在shell中运行它:

rate -c 192.168.122.0/24 > file.txt
如果必须从PHP运行它:

shell_exec('rate -c 192.168.122.0/24 > file.txt');

“>”字符将命令的输出重定向到文件。

您也可以通过PHP获取输出,然后将其保存到文本文件中

    $output = shell_exec('rate -c 192.168.122.0/24');
    $fh = fopen('output.txt','w');
    fwrite($fh,$output);
    fclose($fh);

正如您忘记提到的,您的命令提供了一个无结束的输出流。要实时读取输出,需要使用

PHP网站上的示例:

$handle = popen('/path/to/executable 2>&1', 'r');
echo "'$handle'; " . gettype($handle) . "\n";
$read = fread($handle, 2096);
echo $read;
pclose($handle);
您可以像读取文件一样读取进程输出

$path_to_file = 'path/to/your/file';
$write_command = 'rate -c 192.168.122.0/24 >> '.$path_to_file;
shell_exec($write_command);
希望这有帮助D
这将引导你找到一个好方法

您确定
rate
命令存在吗。它在命令行上工作吗?你能告诉我们在运行命令后在终端中得到了什么吗?如果你自己运行命令,你会得到输出吗?有无“>file.txt”。如果文本文件是空的,这很奇怪,这意味着命令没有打印任何结果。谢谢你的回复。是的,我可以在终端运行命令的非结束输出时得到输出stream@Roshan:您是否遇到“权限问题”?尝试将
2>&1
添加到上述命令行。我怀疑您是否可以从php运行任意命令。@Salman文件权限没有问题,我可以轻松地从ls-l中取出文本文件。@Roshan:这可能仍然是权限问题,ls命令可能与rate命令具有不同的权限。你试过将标准错误重定向到文本文件吗?不走运,伙计,没什么可以写入文本文件是的,这很好,非常感谢你的帮助,非常感谢。