真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

php執(zhí)行系統(tǒng)外部命令的四種方法

準(zhǔn)備工作

成都創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供濱州網(wǎng)站建設(shè)、濱州做網(wǎng)站、濱州網(wǎng)站設(shè)計、濱州網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、濱州企業(yè)網(wǎng)站模板建站服務(wù),10余年濱州做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。

出于安全性考慮,在通常情況下虛擬主機、XAMPP、DedeAMPZ等PHP運行環(huán)境都是禁止調(diào)用系統(tǒng)外部命令的。所以當(dāng)你需要使用PHP執(zhí)行命令的函數(shù)調(diào)用系統(tǒng)外部命令時,你需要確保PHP運行環(huán)境支持PHP執(zhí)行命令的函數(shù)。

如果你使用的是XAMPP、DedeAMPZ,一般默認是禁止運行PHP執(zhí)行命令的函數(shù)的,你可以在php.ini配置文件中disable_functions一項中去除你想要使用的函數(shù),然后重啟apache即可。我使用的是DedeAMPZ,所以我去除了exec()、passthru()、system()、shell_exec()這四個函數(shù)。PHP運行環(huán)境如何配置?

如果你的PHP運行環(huán)境是自行配置的,默認php.ini配置文件中是不禁止你調(diào)用執(zhí)行外部命令的函數(shù)的,當(dāng)然出于安全考慮,你還是應(yīng)該禁止調(diào)用一部分執(zhí)行系統(tǒng)外部命令的函數(shù),找到disable_functions,配置如下:

disable_functions = exec,system,passthru,shell_exec

方法一:使用exec函數(shù)執(zhí)行系統(tǒng)外部命令

原型:function exec(string $command,array[optional] $output,int[optional] $return_value)

知識點:exec執(zhí)行系統(tǒng)外部命令時不會輸出結(jié)果,而是返回結(jié)果的最后一行,如果你想得到結(jié)果你可以使用第二個參數(shù),讓其輸出到指定的數(shù)組,此數(shù)組一個記錄代表輸出的一行,即如果輸出結(jié)果有20行,則這個數(shù)組就有20條記錄,所以如果你需要反復(fù)輸出調(diào)用不同系統(tǒng)外部命令的結(jié)果,你最好在輸出每一條系統(tǒng)外部命令結(jié)果時清空這個數(shù)組,以防混亂。第三個參數(shù)用來取得命令執(zhí)行的狀態(tài)碼,通常執(zhí)行成功都是返回0。

方法二:使用system函數(shù)執(zhí)行系統(tǒng)外部命令

原型:function system(string $command,int[optional] $return_value)

知識點:system和exec的區(qū)別在于system在執(zhí)行系統(tǒng)外部命令時,直接將結(jié)果輸出到游覽器,如果執(zhí)行命令成功則返回true,否則返回false。第二個參數(shù)與exec第三個參數(shù)含義一樣。

方法三:使用函數(shù)passthru執(zhí)行系統(tǒng)外部命令

原型:function passthru(string $command,int[optional] $return_value)

知識點:passthru與system的區(qū)別,passthru直接將結(jié)果輸出到游覽器,不返回任何值,且其可以輸出二進制,比如圖像數(shù)據(jù)。

方法四:反撇號`(和~在同一個鍵)執(zhí)行系統(tǒng)外部命令

安全性說明

當(dāng)你使用這些函數(shù)執(zhí)行命令時,如果是根據(jù)用戶提交數(shù)據(jù)作為執(zhí)行命令的話,你需要考慮系統(tǒng)安全性,可以使用escapeshellcmd()和escapeshellarg()函數(shù)阻止用戶惡意在系統(tǒng)上執(zhí)行命令,escapeshellcmd()針對的是執(zhí)行的系統(tǒng)命令,而escapeshellarg()針對的是執(zhí)行系統(tǒng)命令的參數(shù)。這兩個參數(shù)有點類似addslashes()的功能。

其他說明

當(dāng)執(zhí)行命令的返回結(jié)果非常龐大時,可以需要考慮將返回結(jié)果輸出至其他文件,再另行讀取文件,這樣可以顯著提高程序執(zhí)行的效率。即

leapsoulcn.txt"); ?>

說明:這里system執(zhí)行命令時并不將結(jié)果直接輸出至游覽器而是輸出至指定目錄下的文件中,顯著提高了程序執(zhí)行的效率。


標(biāo)題名稱:php執(zhí)行系統(tǒng)外部命令的四種方法
標(biāo)題網(wǎng)址:http://weahome.cn/article/chocss.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部