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

PHP COM 類別呼叫 Windows 元件實戰:WScript.Shell、Word、FSO、XMLHTTP 範例集

     編輯:PHP 綜合知識

前置條件

  1. 元件已註冊:`regsvr32 component.dll`
  2. `php.ini` 啟用:`com.allow_dcom = true`
  3. 執行身分具備元件存取權限(DCOM 設定)

基本語法

$obj = new COM("Server.Object"); // ProgID:通常為「程式庫.類別」
$obj->Property = $value;         // 設定屬性
$obj->Method($arg);              // 呼叫方法

經典範例集

1. WScript.Shell 執行命令並捕獲輸出

<?php
$wsh = new COM("WScript.Shell") or die("WScript.Shell 建立失敗");
$exec = $wsh->Exec("cmd /c dir"); // 執行命令
$output = $exec->StdOut->ReadAll(); // 讀取標準輸出
echo "
$output
"; ?>

2. Word 自動化:建立文件、寫入、儲存、關閉

<?php
$word = new COM("Word.Application") or die("Word 啟動失敗");
echo "Word 版本: {$word->Version}\n";
$word->Visible = 1; // 顯示視窗(伺服器端建議 0)
$word->Documents->Add(); // 新增空白文件
$word->Selection->TypeText("這是 COM 自動化測試內容。");
$word->Documents[1]->SaveAs("C:/temp/com_test.doc");
$word->Quit();
$word->Release();
$word = null; // 釋放參考
?>

3. Scripting.FileSystemObject 檔案屬性操作(隱藏/系統檔案)

<?php
$fso = new COM("Scripting.FileSystemObject");
$file = $fso->GetFile(__FILE__); // 必須使用絕對路徑
$file->Attributes = 6; // 2(Hidden) + 4(System) = 6
// 常數對照:
// 0 Normal, 1 ReadOnly, 2 Hidden, 4 System, 8 Volume, 16 Directory, 32 Archive, 64 Link, 128 Compressed
?>

4. Microsoft.XMLHTTP 發送 HTTP 請求(類似 cURL)

<?php
$xmlhttp = new COM("Microsoft.XMLHTTP") or die("XMLHTTP 建立失敗");
$xmlhttp->open("GET", "https://localhost/1.txt", false); // 同步
$xmlhttp->send();
echo $xmlhttp->responseText;
// 方法:open(method, url, async, user, pwd)
// send(body) | setRequestHeader(header, value)
// 屬性:responseText, responseXML, responseBody, responseStream, status, statusText
?>

進階提示

  • 錯誤處理:包裝 `try-catch` 捕獲 `com_exception`,記錄錯誤碼與訊息。
  • 資源釋放:務必呼叫 `$obj->Release()` 並設為 `null`,避免 COM 物件洩漏導致伺服器掛住。
  • 效能:COM 跨程序呼叫開銷大,高併發場景極易耗盡資源。建議改用專用服務(如獨立轉檔微服務)或純 PHP 函式庫。
  • 64 位元相容:若 PHP 為 64 位元,需確保 COM 元件有 64 位元版本,否則需啟用 32 位元相容模式(IIS 應用程式池「啟用 32 位元應用程式」= True)。

僅適用於 Windows + PHP 環境,Linux 請改用 Wine 或跨平台替代方案。

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