2011-04-19 81 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

相關問題