[精讚] [會員登入]
1185

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

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

分享此文連結 //n.sfs.tw/11790

分享連結 [PHP] 讀取作業系統程式執行結果@新精讚
(文章歡迎轉載,務必尊重版權註明連結來源)
2019-10-22 09:38:46 最後編修
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

END

你可能感興趣的文章

[phpmyadmin] 錯誤:您應升級到 MySQL 5.5.0 或更新版本 使用phpmyadmin4出現錯誤:您應升級到 MySQL 5.5.0 或更新版本的解決方式

[phpmyadmin] 設定預設語言(Language) phpmyadmin預設進來是會選擇你瀏覽器預設的語系,改成正體中文

[PHP] 命名空間 namespace及 use PHP >=5.3 開始支援命名空間:namespace

[PHP] 位元運算 (Bitwise operation)及和PERL比較 PHP 的位元運算,及和PERL比較整理

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

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

隨機好文

[Windows7] 移除IE10及移除IE11 Windows7 不得已的情況要移除IE11或IE10怎麼做?

[札記] 2016.7~12月札記 札記,只是札記

TFTP Server 安裝及使用 讓設備的網路設定檔或是韌體經由TFTP拷備出來,操作的方法

[CodeIgniter3] 解決無法上傳特定檔案(.sb2)的問題 上傳時出現The filetype you are attempting to upload is not allowed,要怎麼解決?

Smarty安裝 smarty 是著名的樣版引擎,非常的好用,用多了突然發現拿掉smarty反而不會寫php了,以下是安裝過程..