1樓:扶桑安魂曲
php作為一種伺服器端的指令碼語言,象編寫簡單,或者是複雜的動態網頁這樣的任務,它完全能夠勝任。但事情不總是如此,有時為了實現某個功能,必須借助於作業系統的外部程式(或者稱之為命令),這樣可以做到事半功倍。
那麼,是否可以在php指令碼中呼叫外部命令呢?如果能,如何去做呢?有些什麼方面的顧慮呢?相信你看了本文後,肯定能夠回答這些問題了。
是否可以?
答案是肯定的。php和其它的程式語言一樣,完全可以在程式內呼叫外部命令,並且是很簡單的:只要用乙個或幾個函式即可。
前提條件
由於php基本是用於web程式開發的,所以安全性成了人們考慮的乙個重要方面。於是php的設計者們給php加了乙個門:安全模式。
如果執行在安全模式下,那麼php指令碼中將受到如下四個方面的限制:
執行外部命令
在開啟檔案時有些限制
連線mysql資料庫
基於http的認證
在安全模式下,只有在特定目錄中的外部程式才可以被執行,對其它程式的呼叫將被拒絕。這個目錄可以在php.ini檔案中用safe_mode_exec_dir指令,或在編譯php是加上--with-exec-dir選項來指定,預設是/usr/local/php/bin。
如果你呼叫乙個應該可以輸出結果的外部命令(意思是php指令碼沒有錯誤),得到的卻是一片空白,那麼很可能你的網管已經把php執行在安全模式下了。
如何做?
在php中呼叫外部命令,可以用如下三種方法來實現:
1) 用php提供的專門函式
php提供共了3個專門的執行外部命令的函式:system(),exec(),passthru()。
system()
原型:string
system (string command [, int return_var])
system()函式很其它語言中的差不多,它執行給定的命令,輸出和返回結果。第二個引數是可選的,用來得到命令執行後的狀態碼。
例子:<?
system("/usr/local/bin/webalizer/webalizer");
?>
exec()
原型:string
exec (string command [, string array [, int return_var]])
exec()函式與system()類似,也執行給定的命令,但不輸出結果,而是返回結果的最後一行。雖然它只返回命令結果的最後一行,但用第二個引數array可以得到完整的結果,方法是把結果逐行追加到array的結尾處。所以如果array不是空的,在呼叫之前最好用unset()最它清掉。
只有指定了第二個引數時,才可以用第三個引數,用來取得命令執行的狀態碼。
2樓:
在開啟檔案時有些限制
連線mysql資料庫
基於http的認證
在安全模式下,只有在特定目錄中的外部程式才可以被執行,對其它程式的呼叫將被拒絕。這個目錄可以在php.ini檔案中用safe_mode_exec_dir指令,或在編譯php是加上--with-exec-dir選項來指定,預設是/usr/local/php/bin。
如果你呼叫乙個應該可以輸出結果的外部命令(意思是php指令碼沒有錯誤),得到的卻是一片空白,那麼很可能你的網管已經把php執行在安全模式下了。
win10 cmd提示不是內部或外部命令怎麼辦
導致這類情況產生的主要原因是系統未安裝 telnet客戶端 程式所造成的。下面介紹win10系統提示telnet不是內部或外部命令如何解決的方法。1 右擊桌面左下角的 開始 按鈕,從其右鍵選單中選擇 控制面板 項以開啟。2 待開啟 控制面板 視窗後,將 檢視方式 設定為 大圖示 從工具列表中找到 程...
VFP系統中,執行選單檔案的命令是?
h3 選單命令 h3 快捷鍵命令用途ctrl a全部選定命令 選單 文字ctrl c複製命令 選單 ctrl d執行 程式 選單 ctrl e刪除選單項 選單 選單 設計選單ctrl e執行 程式 選單 執行表單 表單 選單 程式 表單設計器。ctrl f查詢命令 選單 ctrl g查詢下乙個 選單...
php如何判斷當前的作業系統是linux還是windows
php判斷當前作業系統的方法很多,比如 1.直接使用php預定義常量php os來獲取 header content type text html charset utf 8 os name php os if strpos os name,linux false else if strpos os...