PHP中常見的幾種運行代碼的方式


常見的運行程序的方法有

  • shell_exec
  • ``(反引號)
  • eval
  • system
  • exec
  • passthru

下面分別介紹他們的用法:

名稱 解釋 返回值 注意
shell_exec 通過 shell 環境執行命令,並且將完整的輸出以字符串的方式返回。與執行操作符(也叫執行運算符)相同 命令執行的輸出。 如果執行過程中發生錯誤或者進程不產生輸出,則返回 NULL  
``(反引號) PHP 將嘗試將反引號中的內容作為 shell 命令來執行,並將其輸出信息返回(即,可以賦給一個變量而不是簡單地丟棄到標准輸出)。使用反引號運算符(`)的效果與函數 shell_exec() 相同。   反引號運算符在激活了安全模式或者關閉了 shell_exec() 時是無效的。
與其它某些語言不同,反引號不能在雙引號字符串中使用。
eval 把字符串作為PHP代碼執行。 eval() 返回 NULL,除非在執行的代碼中 return 了一個值,函數返回傳遞給 return 的值。 PHP 7 開始,執行的代碼里如果有一個 parse error,eval() 會拋出 ParseError 異常。在 PHP 7 之前, 如果在執行的代碼中有 parse error,eval() 返回 FALSE,之后的代碼將正常執行。無法使用 set_error_handler() 捕獲 eval() 中的解析錯誤。 函數eval()語言結構是 非常危險的, 因為它允許執行任意 PHP 代碼。 它這樣用是很危險的。 如果您仔細的確認過,除了使用此結構以外 別無方法, 請多加注意,不要允許傳入任何由用戶 提供的、未經完整驗證過的數據 。
system 執行外部程序,並且顯示輸出。 成功則返回命令輸出的最后一行, 失敗則返回 FALSE。  
exec 執行一個外部程序。 命令執行結果的最后一行內容。 如果你需要獲取未經處理的全部輸出數據, 請使用 passthru() 函數。  
passthru 執行外部程序並且顯示原始輸出。同 exec() 函數類似, passthru() 函數 也是用來執行外部命令(command)的。 當所執行的 Unix 命令輸出二進制數據, 並且需要直接傳送到瀏覽器的時候, 需要用此函數來替代 exec() 或 system() 函數。 常用來執行諸如 pbmplus 之類的可以直接輸出圖像流的命令。 通過設置 Content-type 為 image/gif, 然后調用 pbmplus 程序輸出 gif 文件, 就可以從 PHP 腳本中直接輸出圖像到瀏覽器。 沒有返回值  

 

其他程序執行函數

    • escapeshellarg — 把字符串轉碼為可以在 shell 命令里使用的參數
    • escapeshellcmd — shell 元字符轉義
    • exec — 執行一個外部程序
    • passthru — 執行外部程序並且顯示原始輸出
    • proc_close — 關閉由 proc_open 打開的進程並且返回進程退出碼
    • proc_get_status — 獲取由 proc_open 函數打開的進程的信息
    • proc_nice — 修改當前進程的優先級
    • proc_open — 執行一個命令,並且打開用來輸入/輸出的文件指針。
    • proc_terminate — 殺除由 proc_open 打開的進程
    • shell_exec — 通過 shell 環境執行命令,並且將完整的輸出以字符串的方式返回。
    • system — 執行外部程序,並且顯示輸出


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM