[精讚] [會員登入]
1195

[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

你可能感興趣的文章

[PHP] 使用FTP PHP 上使用 FTP 的寫法

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

[PHP] 取得檔名和路徑:basename, dirname 由絕對路徑取的路徑及檔名的方法

[PHP] 處理mail 函式的標題中文字亂碼 PHP的mail函式若標題有中文字得先處理過,否則收信者會看到亂碼

[CI3] 使用和修改日曆類別 calendar library CI3有一個日曆圖書館 library,可以快速的建立一個日曆,但是想修改讓他更棒

[PHP]解決ksort新增的SORT_NATURAL|SORT_FLAG_CASE方法 php>=5.4中ksort函數多了SORT_NATURAL 和 SORT_FLAG_CASE 旗標,對舊版的PHP中要怎麼辦?

隨機好文

[jQuery] 利用load()來達成ajax的寫法 jQuery中利用load()來達成ajax的寫法,也有人稱他是假的ajax,作法就是..

[HP DL380G7] 生效啟動第3,4片網卡/開啟或關閉內建的網卡 HP DL380G7 預設第3,4片網卡裝完系統後找不到,難道是壞了?要怎麼辦?

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

UTF-8的網頁但IE8一片空白 UTF8編碼的網頁在Firefox 正常顯示、但IE8 就是空白,IE8編碼設定是「自動偵測」可是自動偵測到的是 big5...

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