導航:首頁 > 程序命令 > php運行cmd命令

php運行cmd命令

發布時間:2023-03-17 23:34:49

Ⅰ 在伺服器上用php調用cmd執行某exe文件,求代碼!!!!

很多情況下需要php調用其他程序如shell命令、shell腳本、可執行程序等等,此時需要使用到諸如exec/system/popen/proc_open等函數,每種函數有各自適合使用的場景以及需要注意的地方。

前提:PHP沒有運行在安全模式
如果PHP運行在安全模式下,那麼在執行外部命令、打開文件、連接資料庫、基於HTTP的認證這4個方面將會受到制約,可能在調用外部程序時無法獲取預期的結果,此時需要設置特定目錄,可以在php.ini中編輯safe_mode_exec_dir參數來指定。

1. exec
原型:string exec ( string command [, array &output [, int &return_var]] )
描述:返回值保存最後的輸出結果,而所有輸出結果將會保存到$output數組,$return_var用來保存命令執行的狀態碼(用來檢測成功或失敗)。
例子:$ret = exec("ls -al", $output, $var);
注意:
A. 輸出結果會逐行追加到$output中,因此在調用exec之前需要unset($output),特別是循環調用的時候。
B.

如果想通過exec調用外部程序後馬上繼續執行後續代碼,僅僅在命令里加"&"是不夠的,此時exec依然會等待命令執行完畢;需要再將標准輸出
做重定向才可以,例如:exec("ls -al >/dev/null &", $output, $var);
C.
要學會善用EscapeShellCmd()和EscapeShellArg()。函數EscapeShellCmd把一個字元串
中所有可能瞞過Shell而去執行另外一個命令的字元轉義。這些字元在Shell中是有特殊含義的,象分號(|),重定向(>)和從文件讀入
(<)等。函數EscapeShellArg是用來處理命令的參數的。它在給定的字元串兩邊加上單引號,並把字元串中的單引號轉義,這樣這個字元串
就可以安全地作為命令的參數。

2. system
原型:string system ( string command [, int &return_var] )
描述:執行給定的命令,返回最後的輸出結果;第二個參數是可選的,用來得到命令執行後的狀態碼。
例子:$ret = system("ls -al", $var);
注意:略。

3. passthru
原型:void passthru (string command [, int return_var])
描述:執行給定的命令,但不返回任何輸出結果,而是直接輸出到顯示設備上;第二個參數可選,用來得到命令執行後的狀態碼。
例子:passthru("ls -al", $var);
注意:略。

4. popen
原型:resource popen ( string command, string mode )

述:打開一個指向進程的管道,該進程由派生給定的 command 命令執行而產生。 返回一個和 fopen()
所返回的相同的文件指針,只不過它是單向的(只能用於讀或寫)並且必須用 pclose() 來關閉。此指針可以用於 fgets(),fgetss()
和 fwrite()。
例子:$fd = popen("command", 'r'); $ret = fgets($fd);
注意:只能打開單向管道,不是'r'就是'w';並且需要使用pclose()來關閉。

5. proc_open

型:resource proc_open ( string cmd, array descriptorspec, array
&pipes [, string cwd [, array env [, array other_options]]] )
描述:與popen類似,但是可以提供雙向管道。具體的參數讀者可以自己翻閱資料,比如該博客:http://hi..com/alex_wang58/blog/item/a28657de16fec55195ee372a.html。
注意:
A. 後面需要使用proc_close()關閉資源,並且如果是pipe類型,需要用pclose()關閉句柄。
B. proc_open打開的程序作為php的子進程,php退出後該子進程也會退出。
C. 筆
者在使用的時候遇到獲取外部程序輸出阻塞的問題,也就是在例子中的fgets($pipes[1])語句阻塞了,無法繼續進行。經過多方查證後發現,問題
一般出在外部程序中,比如外部程序是C程序,使用fprintf(stdin, "****
\n");輸出結果,此時需要加上fflush(stdout);才行,否則輸出結果可能會暫留緩存中,無法真正輸出,而php也就無法獲取輸出了。
例子:
///< 打開管道
$pwd = "*****";
$pipes = array();
$command = "*****";
$desc = array(array('pipe', 'r'), array('pipe', 'w'), array('pipe', 'w'));
$handle = proc_open($command, $desc, $pipes, $pwd);
if (!is_resource($handle)) {
fprintf(STDERR, "proc_open failed.\n");
exit(1);
}
///< 讀寫
fwrite($pipes[0], "*****\n");
$ret = rtrim(fgets($pipes[1]), "\n");
///< 關閉管道
fclose($pipes[0]);
fclose($pipes[1]);
fclose($pipes[2]);
proc_close($handle);

Ⅱ cmd命令大全/cmd命令提示符大全

1.開始->運行->CMD
2.進入某個磁碟,直接盤符代號:如D:,不用CD 命令切換
3.進入除根錄以下的文件夾 cd 文件夾路徑 例如我要進入 E:/Program Files/ PHP 就
輸入 E:回車
註: 不 能在一打開CMD的時候運行CD E:/Program Files/PHP,需要先進入磁碟(若一打開CMD的時候運行CD E:/Program Files/PHP,目錄不會切換,但在下次輸入盤符的時候進入上一次希望進入的目錄,如輸入E:會直接進入E:/Program Files/PHP)
輸入 CD "Program Files"/PHP 回車
註:如果需要在dos下查看帶有空格的文件夾(如Documents and settings,Program files等文件夾),可以有下面兩種處理方法: 1、給文件夾加引號。 如C:/>cd c:/"documents and settings"這樣的好處是多長的文件名都可以全部顯示出來。 2、由於一般情況下DOS系統只支持8.3格式的文件名,因此在DOS下遇到長文件名的文件夾時,取前面6位,然後在後面加上一個~號和數字1。 你可以輸入C:/>cd c:/docume~1 進入Documents and settings文件夾。當截取前面的6個字母之後出現重復時,可以將1改為2,依此類推。
3.進入上一層目錄 CD ../
4.顯示目錄下的文件及了目錄 dir

剛接觸電腦的時候是從DOS系統開始,DOS時代根本就沒有Windows這樣的視窗操作界面,只有一個黑漆漆的窗口,讓你輸入命令。所以學DOS系統操作,cmd命令提示符是不可或缺的。可以告訴大家,大多數的程序員牛人或計算機專家在DOS系統下的操作是非常了得的,所以菜鳥要想成為計算機高手,DOS命令是非學不可。
直到今天的Windows系統,還是離不開DOS命令的操作。學習DOS系統操作,首先了解命令提示符。先了解每個命令提示符的作用,然後才能夠靈活運用。
下面將詳細的為大家介紹cmd命令大全的符號和作用說明。

想要更詳細的了解cmd命令大全、cmd命令提示符大全,還需要進入CMD命令提示符嘗試,運行CMD命令提示符的方式:點擊「開始」菜單——>選擇「運行」——>輸入「CMD」,點擊確定或按下回車鍵即可。

Ⅲ php中怎樣執行cmd

exec("命令");//記得把路勁寫對

Ⅳ php 命令行程序如何常駐內存

點擊電腦開始菜單,打開運行窗口,在窗口編輯框里輸入cmd,點擊確定按鈕,打開cmd命令
窗口,然後進入你的工程目錄中的可執行程序文件夾下
輸入可執行程序文件名 後面帶上你需要的參數 按Enter鍵 就可以了

cmd命令:如你的可執行程序在D://CP//debug/aa.exe
你需要在命令行窗口輸入d:按Enter鍵進入D盤
cd CP/debug按Enter鍵進入D盤中CP目錄debug子目錄中
輸入aa.exe 2 3 按Enter鍵運行你的程序 結果就會出現
2.000000 to the 3.000000 power = 8

Ⅳ 在windows系統下的cmd下面執行php 命令,返回『PHP』不是內部或外部命令,也不是可運行的程序。。

需要把php.exe設置到環境變數裡面,假設你的php.exe路徑是D:wampinPHPphp5.5.12

右擊「我的電腦-》屬性-》高級->環境變數-》系統變數-》PATH-》編輯」,在變數值中添加:

;D:wampinPHPphp5.5.12

重啟CMD,輸入php -v 測試是否成功。

Ⅵ 如何在cmd命令行下運行php

把你安裝後的php.exe文件路徑添加到系統PATH下,就行了

Ⅶ 如何使用PHP打開一個新的CMD窗口

<?
execInBackground('startcmd.exe@cmd/k"ping127.0.0.1"');functionexecInBackground($cmd){
枝扮if(substr(php_uname(),0,頃沒7)=="Windows"){
雀搭納pclose(popen("start/B".$cmd,"r"));
}
else{
exec($cmd.">/dev/null&");
}
}
?>

Ⅷ 如何在cmd下面寫php代碼

首先要把php目錄放到環境變數path下面:

我的電腦-》屬性-》高級-》環境變數-》系統變數->Path->編輯->

查看路徑下有沒有php目錄,如果沒有加上

比如我的php路徑是E:AppServphp5 所以要在最後面加上E:AppServphp5;

成功後win+r 調出命令行,輸入php-v 查看版本,如果不對請檢查壞境變數是否設置正確

運行php文件php-f 路徑+文件名 或者php路徑+文件名

(小技巧:windows下面可以把文件直接拖進去,省去cd/命令,或者慢慢拼寫完整路徑)

兩種方法都可以執行命令,如果是.php文件則執行php代碼,否則直接以字元串形式讀取文件

4在命令行直接寫並運行PHP代碼,在windows環境下,盡量使用雙引號, 在linux環境下則盡量使用單引號來完成。php-r 「echo getcwd();」

Ⅸ 怎麼在CMD里運行PHP

window7解決方案,XP沒試,不過想來也是同理,差不了多少:
1、你的php.exe文件的路徑,比如d:\php5.3\
2、打開計算機右鍵 > 屬性 > 高級系統設置 > 高級 > 環境變數
3、在系統變數中找到Path看看有沒有你的php路徑,如果沒有,則在Path中加入你的php路徑,如:d:\php5.3\,保存即可
4、在cmd命令行下進入到你的站點目錄,直接輸入文件名即可,如:F:\www\socket>php.exe s.php

Ⅹ PHP使用exec執行cmd命令成功後結果也出來了,但cmd.exe進程一直不結束無法執行後面的代碼

你可以試試吧執行的結果寫入文件 不然是一直等待返回的

閱讀全文

與php運行cmd命令相關的資料

熱點內容
命令方塊怎麼調鍵盤 瀏覽:841
不把密碼存在伺服器上怎麼辦 瀏覽:398
怎麼讓指令方塊的命令消失 瀏覽:543
用單片機做plc 瀏覽:404
雲伺服器進入子目錄命令 瀏覽:795
伺服器機櫃如何配電 瀏覽:578
怎麼刪除iphone資源庫里的app 瀏覽:940
pdf魚 瀏覽:648
單片機pcf8591什麼作用 瀏覽:805
sql命令學院 瀏覽:283
加密軟體在電腦那個盤 瀏覽:988
android獲取外部存儲 瀏覽:573
怎麼查自己家的伺服器地址 瀏覽:858
編程c語言工作好不好 瀏覽:569
單片機焊接地怎麼連接 瀏覽:694
游戲源碼怎麼抓 瀏覽:216
程序員幫大家引走怪物 瀏覽:16
手機網頁小游戲源碼 瀏覽:513
戰地一伺服器怎麼設置管理員 瀏覽:396
數控車床編程可以上班嗎 瀏覽:460