由於Web Server以及PHP的實現方式所限,我們在現實環境中很難利用PHP去調用一些Linux中需要root許可權才能執行的程式,對此,我從網上找到另外一種方式來繞開這個限制。首先先寫個c程式中轉調用系統命令,然後用PHP去執行此c程式。
c程式
首先寫個c檔案,比如/usr/local/ismole/w.c
- //note 由於wordpress編輯器的原因,請將此代碼中標頭檔多餘的空格去除
- #include < stdio.h>
- #include < stdlib.h>
- #include < systypes.h>
- #include < unistd.h>
-
- int main()
- {
- uid_t uid ,euid;
-
- //note 獲得當前的uid
- uid = getuid();
- //note 獲得當前euid
- euid = geteuid();
-
- //note 交換這兩個id
- if(setreuid(euid, uid))
- perror("setreuid");
-
- //note 執行將要執行linux系統命令
- system("/usr/bin/w");
- return 0;
- }
//note 由於wordpress編輯器的原因,請將此代碼中標頭檔多餘的空格去除
編譯該檔案gcc -o ipt -Wall w.c,這時會在目前的目錄下產生程式w。
改變此程式的屬主chmod u+s ./w。
PHP執行
檔案內容如下,放在web目錄下,訪問就會輸出當前的伺服器負載情況。
- < ?php
- //note key的驗證過程
- if($key != $authkey) {
- // exit(key error);
- }
-
- $last_line = exec(/usr/local/ismole/w, $retval);
-
- $returnArray = explode("load average: ", $retval[0]);
- $returnString = $returnArray[1];
-
- echo $returnString;
按照上面的執行個體,我們可以用PHP來做任何我們想執行的Linux系統命令,SVN更新,伺服器監控,備份,恢複,日常維護等等。比如《利用SVN搭建測試伺服器》
http://www.bkjia.com/PHPjc/486281.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/486281.htmlTechArticle由於Web Server以及PHP的實現方式所限,我們在現實環境中很難利用PHP去調用一些Linux中需要root許可權才能執行的程式,對此,我從網上找到另外...