[精讚] [會員登入]
121

[PHP] 讀取作業系統程式執行結果

PHP讀取作業系統程式執行結果

此文完整連結 http://n.sfs.tw/11790

複製連結 [PHP] 讀取作業系統程式執行結果@新精讚
(文章歡迎轉載,務必尊重版權註明連結來源)
2017-09-21 19:29:13 最後編修
2017-09-21 19:28:14 By 瘦河馬
 

PHP有system、exec、passthru、eval 這些函數可以將系統執行的結果輸出,我們想要把結果貼到網頁上。

i.php

system("ping -c 1 211.75.194.243");

執行

# php i.php
PING 211.75.194.243 (211.75.194.243) 56(84) bytes of data.
64 bytes from 211.75.194.243: icmp_seq=1 ttl=64 time=0.059 ms

--- 211.75.194.243 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.059/0.059/0.059/0.000 ms

結果:

PING 211.75.194.243 (211.75.194.243) 56(84) bytes of data.
64 bytes from 211.75.194.243: icmp_seq=1 ttl=64 time=0.059 ms

--- 211.75.194.243 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.059/0.059/0.059/0.000 ms

如果要用PHP呼叫要把結果用變數取回,會發現困難,因為有些系統函數本身就會出輸結果,例如上面的 ping

我們想企圖利用變數來接system傳回的值,因為它只會取回最後一行的結果,同時也會把system本身的內容輸出。假如想用nl2br來解決也是無用,因為system本身早就把結果輸出了。

$a= system("ping -c 1 163.17.40.1");
echo "a=". $a;

結果:

PING 211.75.194.243 (211.75.194.243) 56(84) bytes of data.
64 bytes from 211.75.194.243: icmp_seq=1 ttl=64 time=0.059 ms

--- 211.75.194.243 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.059/0.059/0.059/0.000 ms

a=rtt min/avg/max/mdev = 0.059/0.059/0.059/0.000 ms

使用中介檔來解決

有一些方法可以解決這個問題,就是利用一個中介檔案

先讓結果輸出到中介檔,再讀取,這樣的好處就是不會輸出到螢幕上。

$file = "/tmp/postfixstatus";
system("ping -c 1 211.75.194.243 > $file");  // 把結果輸出到一個中介檔
$data = file_get_contents($file); // php5以上可以使用這個函數來替代fopen。
echo nl2br($data);

原文 2012-01-30 17:14:30

你可能感興趣的文章

PHP cli 傳入參數 php cli (PHP命令列的傳入參數使用方法

[PHP] 檢查檔案是否是圖檔 使用getimagesize函數檢查檔案是否是圖檔

[PHP] 檢查IP是否在某個網段內 mtachcidr 要檢查IP是否在某個網段內,要寫幾行?10行?5行? 不用,只要2行。以下是我寫的 code /** * matchCI

利用 php 木馬作為駭客攻擊的手法 利用 php 木馬作為駭客攻擊的手法

[PHP7] 利用Memcached 儲存 Session Memcached+ PHP7,利用Memcached 儲存 Session。

[PHP] 讀取作業系統程式執行結果 PHP讀取作業系統程式執行結果

設定Google analytics API #1 -- Google網站上的設定 讓你的網站能夠存取你的Google analytics上面的資料

[PHP] 使用browscap檢查瀏覽器版本 使用PHP內建函數browscap檢查瀏覽器版本

[PHP] 將字串的部分加上遮罩的函式 有些資料會想要隱藏部分的字元,例如身分證號或信用卡號、電話等。我寫了一個函式來完成這個功能。

[PHP] 台灣身分證號及檢查程式 台灣身分證號及PHP檢查程式

我有話要說


限制:留言最高字數1000字,超過部分會被截掉。請注意:留言不可帶有網址,會被濾掉。 限制:未登入訪客,每則留言間隔需超過10分鐘,每日最多5則留言。

訪客留言

[無留言]

隨機好文

[jQuery] select 元件的取值及給值 html中的元件select,在jquery中要如何使用?

[Freebsd] 定時測試 ADSL 是否斷線並重連 中華電信 ADSL 雖有固定 ip,可是他卻會不定時「斷線」, 使用以下的 方法可以定時測試是否斷線,以及重新撥接。

維修冰箱 維修冰箱

網頁的標頭(head)搜尋引擎和FB最佳化 網頁的標頭(head)搜尋引擎和facebook最佳化

McJob 淺談 在英語世界裡,近期多了一個英文生字 Mcjob,定義為「低薪、無聊且沒有什麼前景的工作」。