2011-04-19 77 views
2

我试图在我的Centos计算机上运行rate -c 192.168.122.0/24命令,并使用shell_exec('rate -c 192.168.122.0/24')命令写下该命令的输出到文本文件;仍然没有运气!php shell_exec()出来得到一个文本文件

+0

你有什么问题? – alex 2011-04-19 11:39:15

+0

您确定存在'rate'命令吗?它是否在命令行上工作? – mario 2011-04-19 11:40:00

+0

你能告诉我们在运行命令后你在终端中得到了什么吗? – 2011-04-19 11:46:05

回答

1

当你忘了提,你的命令提供了一个非结束输出流。要实时读取输出,您需要使用popen。从PHP的网站

例子:

$handle = popen('/path/to/executable 2>&1', 'r'); 
echo "'$handle'; " . gettype($handle) . "\n"; 
$read = fread($handle, 2096); 
echo $read; 
pclose($handle); 

您可以阅读过程输出就像一个文件。

+0

是的这很好的工作非常感谢你非常感谢你的帮助兄弟。 – 2011-04-19 15:40:17

3

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

rate -c 192.168.122.0/24 > file.txt 

如果你必须从PHP运行:

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

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

+0

那么如果你自己运行命令你会得到一个输出吗?有和没有“> file.txt”。如果文本文件为空,这很奇怪,这意味着该命令不会输出任何结果。 – 2011-04-19 11:45:11

+0

谢谢您的回复。我可以在终端输入命令时终止输出流 – 2011-04-19 11:49:05

+0

@Roshan:您是否遇到过“权限问题”?尝试在上面提到的命令行中添加'2>&1'。我怀疑你是否可以从php运行任意命令。 – 2011-04-19 11:53:41

1

您还可以通过PHP得到的输出,然后将其保存到一个文本文件

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

没有运气好友没有得到写入文本文件 – 2011-04-19 12:27:08

0
$path_to_file = 'path/to/your/file'; 
$write_command = 'rate -c 192.168.122.0/24 >> '.$path_to_file; 
shell_exec($write_command); 

希望这有助于。 :D 这将引导你一个好方法。 https://unix.stackexchange.com/a/127529/41966

相关问题