作者 主題: PHP 怎麼使用system而不印出在網頁上?  (閱讀 7996 次)

0 會員 與 1 訪客 正在閱讀本文。

id4fox

  • 憂鬱的高中生
  • ***
  • 文章數: 103
  • 40 oz 挑戰成功!
    • 檢視個人資料
小弟使用的是 Linux (Fedora 10)
想使用指令 df (註) 來取得硬碟剩餘空間如下

<?php
   $tmp = system("df");
?>

但是這樣php會直接將 df 的資訊印出在網頁上,
請問怎麼樣使用 system 能只將結果存入變數而不會印出呢?
謝謝

(註: df 是 Linux 的一個取得硬碟使用狀況的指令, 我想擷取其
      中部分字串)

hikohan

  • 俺是博士!
  • *****
  • 文章數: 1288
    • 檢視個人資料
回覆: PHP 怎麼使用system而不印出在網頁上?
« 回覆 #1 於: 2009-10-12 20:04 »
這樣如何?

$mNdiskUsage=system("df|grep hda1|awk '{print $5}'");

或者,輸出text切一切處理(split by '\n' )。

lifeIsFunWithPHP.

id4fox

  • 憂鬱的高中生
  • ***
  • 文章數: 103
  • 40 oz 挑戰成功!
    • 檢視個人資料
回覆: PHP 怎麼使用system而不印出在網頁上?
« 回覆 #2 於: 2009-10-13 09:53 »
這樣如何?

$mNdiskUsage=system("df|grep hda1|awk '{print $5}'");

或者,輸出text切一切處理(split by '\n' )。


喔! 原來可以這樣處理啊!
謝謝 hikohan 大大, 酷學園真是個好地方 又學到了.

這樣雖然不能避免 system 的印出, 但可以直接利用 awk (註) 提出需要的字串
我也不用寫程式去拆字串拉! 是個比較接近 Linux 應用的解法.

(註: awk 為 Linux 指令, 可以格式化取出字串資訊, 可查鳥哥)

hikohan

  • 俺是博士!
  • *****
  • 文章數: 1288
    • 檢視個人資料
回覆: PHP 怎麼使用system而不印出在網頁上?
« 回覆 #3 於: 2009-10-13 10:11 »
應該用exec才對

代碼: [選擇]
<?
$mNdiskUsage=exec("df|grep hda5|awk '{print $5}'");
echo $mNdiskUsage;
?>

Description
string exec ( string $command [, array &$output [, int &$return_var]] )
exec() executes the given command.

See Also
system()
passthru()
escapeshellcmd()
pcntl_exec()
backtick operator


lifeIsFunWithPHP.

id4fox

  • 憂鬱的高中生
  • ***
  • 文章數: 103
  • 40 oz 挑戰成功!
    • 檢視個人資料
回覆: PHP 怎麼使用system而不印出在網頁上?
« 回覆 #4 於: 2009-10-13 10:31 »
應該用exec才對

代碼: [選擇]
<?
$mNdiskUsage=exec("df|grep hda5|awk '{print $5}'");
echo $mNdiskUsage;
?>

Description
string exec ( string $command [, array &$output [, int &$return_var]] )
exec() executes the given command.

See Also
system()
passthru()
escapeshellcmd()
pcntl_exec()
backtick operator


 :D 這樣問題就更完美的解決拉 ! Thx!
<?php
$mNdiskUsage=exec("df / | awk '{print \$1 \"\t\" \$3}'");
echo $mNdiskUsage;
?>

bill80362

  • 懷疑的國中生
  • **
  • 文章數: 38
    • 檢視個人資料
回覆: PHP 怎麼使用system而不印出在網頁上?
« 回覆 #5 於: 2009-10-15 15:18 »
使用指令 df 來取得硬碟剩餘空間

請問一下 這種會使用在何種應用上?

就是...做這個通常會為了什麼情況而做呢??

id4fox

  • 憂鬱的高中生
  • ***
  • 文章數: 103
  • 40 oz 挑戰成功!
    • 檢視個人資料
回覆: PHP 怎麼使用system而不印出在網頁上?
« 回覆 #6 於: 2009-10-15 18:28 »
使用指令 df 來取得硬碟剩餘空間

請問一下 這種會使用在何種應用上?

就是...做這個通常會為了什麼情況而做呢??

我當時想到的是想讓程式事先計算是否有足夠的空間進行檔案上傳
或是讓使用者可以由此看到硬碟使用狀況

id4fox

  • 憂鬱的高中生
  • ***
  • 文章數: 103
  • 40 oz 挑戰成功!
    • 檢視個人資料
回覆: PHP 怎麼使用system而不印出在網頁上?
« 回覆 #7 於: 2009-11-13 11:46 »
後來才想到一個最單純的方法~ "註解標籤"

ex:
<?php
   echo "<!--";
   $aaa = system("pwd");
   echo "-->";
?>

這樣 $aaa 就會存到 pwd 的結果, 而不會印在頁面上了

Darkhero

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 3728
  • 性別: 男
    • 檢視個人資料
    • ㄚ凱隨手紀
回覆: PHP 怎麼使用system而不印出在網頁上?
« 回覆 #8 於: 2009-11-14 01:13 »
後來才想到一個最單純的方法~ "註解標籤"

ex:
<?php
   echo "<!--";
   $aaa = system("pwd");
   echo "-->";
?>

這樣 $aaa 就會存到 pwd 的結果, 而不會印在頁面上了

為什麼..不看文件呢?... 而要用那種掩耳盜鈴的方法?
http://tw2.php.net/manual/en/function.system.php
http://tw2.php.net/manual/en/function.exec.php
http://tw.php.net/manual/en/function.shell-exec.php
希望我們的討論是為了把問題解決,而不是爭論誰對誰錯.
『灌水才是重點,發文只是順便』
『我寧可讓不會釣魚的工程師餓死,也不想讓會餓死的工程師去攪沉公司....』
Blog: http://blog.darkhero.net/
秘密基地: http://www.darkhero.net/comic/
目前服務的網站: http://www.libook.com.tw/

id4fox

  • 憂鬱的高中生
  • ***
  • 文章數: 103
  • 40 oz 挑戰成功!
    • 檢視個人資料
回覆: PHP 怎麼使用system而不印出在網頁上?
« 回覆 #9 於: 2009-11-16 16:02 »
為什麼..不看文件呢?... 而要用那種掩耳盜鈴的方法?
http://tw2.php.net/manual/en/function.system.php
http://tw2.php.net/manual/en/function.exec.php
http://tw.php.net/manual/en/function.shell-exec.php
阿~慚愧~真不好意思,
也只是一時想到這個歪道所以就po上來了
確實是個不治本的方法
使用 exec() 或 shell-exec() 都能更直接的處理這個問題
謝謝 Darkhero 點明.