[精讚] [會員登入]
954

[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

你可能感興趣的文章

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

[Smarty5] 如何在樣版中使用php本身的函式 解決 smarty5版後不能直接叫用 php函式的問題

[PHP] CodeIgniter 3+pure+smarty安裝及環境設置1/2 PHP framework CodeIgniter 3+ pure CSS +smarty Template Engine的整合

PHP 移除陣列中的元素 要移除陣列中的其中一項元素

[PHP] 好用的php常數 介紹PHP中 __DIR__, __FILE__, __FUNCTION__, __CLASS__, __METHOD__, __LINE__, __NAMESPACE__等常數

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

我有話要說

>>

限制:留言最高字數1000字。 限制:未登入訪客,每則留言間隔需超過10分鐘,每日最多5則留言。

訪客留言

[無留言]

隨機好文

使用Google尋找你的手機 這近發現google竟然可以用來找android的手機,而且不需要經過什麼設定或安裝軟體。

談借錢 人借錢時手心向上頭向下,人還錢時手心向下頭向上

[Win7] 燒錄 iso 檔 在Windows7 中內建燒錄程式,可以直接把檔案拉到光碟機裡,再執行燒錄。

一個邏輯的錯誤刪了全部檔案的經驗 今天本來想做一件很簡單的事,但卻足足浪費我多一倍的時間,再加上刪掉我全部的檔案,原因只是因為我自己的邏輯錯誤。

設計的工作絕不接受比價 拿買陽春麵的價格想買牛肉麵,寧願倒掉也不賣