首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 命令行工具深度集成:Shell 命令執行與系統交互實戰

     編輯:PHP 綜合知識

背景動機

Web 開發中常需直接操作服務器文件系統、進程管理、日志分析等任務,純 PHP 函數受限於權限與性能,調用 Shell 命令成為剛需。

適用環境

  • Linux / BSD / macOS / Unix-like 系統
  • LAMP 棧環境
  • Windows 下部分命令不可用,需調整

PHP 執行外部命令的四大函數對比

函數返回值適用場景特點
shell_exec($cmd)字符串(完整輸出)獲取命令完整輸出反撇號 `cmd` 別名,最常用
exec($cmd, &$output, &$return_var)最後一行輸出需獲取返回碼、逐行處理輸出$output 為數組,$return_var 為退出碼
passthru($cmd, &$return_var)無(直接輸出到 stdout)二進制輸出(圖片、PDF 等)無緩衝直接輸出
system($cmd, &$return_var)最後一行輸出交互式命令、實時輸出同 passthru 但會輸出換行

實戰案例:shell_exec() 統計文本文件單詞數

<?php
// 等價於 shell 命令:wc -w *.txt
$results = shell_exec('wc -w *.txt');
echo $results;
// 輸出示例:165 readme.txt 388 results.txt 588 summary.txt

shell_exec 執行結果截圖

進階場景

  • 目錄文件計數:shell_exec('ls -1 | wc -l')
  • 日志行數統計:shell_exec('wc -l /var/log/nginx/access.log')
  • 文件同步備份:shell_exec('rsync -avz /src/ user@backup:/dest/')
  • 進程監控:shell_exec('ps aux | grep php')

安全警示

絕不直接拼接用戶輸入到命令中! 必須使用 escapeshellarg()、escapeshellcmd() 轉義,或通過白名單驗證參數。防止命令注入攻擊。

PHP CLI SAPI 补充

PHP 4.2.0+ 內置 CLI SAPI,支持直接編寫 Shell 腳本(#!/usr/bin/php),脫離 Web 服務器獨立運行,適合定時任務、守護進程、構建工具等場景。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved