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

PHP 操作 COM 元件完整指南

     編輯:PHP 綜合知識

PHP 在 Win32 平台操作 COM 與 DCOM 物件

1. 我建立了一個 DLL 進行計算,能在 PHP 執行嗎?

無法直接操作簡單 DLL。若 DLL 包含 COM 伺服器並實作 IDispatch 介面,則可操作。

2. "Unsupported variant type: xxxx (0xxxxx)" 是什麼意思?

有許多 VARIANT 型別及其集合,絕大多數已支援,但仍有少數不支援。陣列也不完全支援,僅支援一維陣列。若發現其他不支援型別,請回報 bug 並提供詳細資訊。

3. PHP 能操作視覺化物件嗎?

通常可行。但 PHP 多作為 Web 伺服器腳本運行,視覺化物件從不出現在伺服器桌面。若用 PHP-GTK 等應用程式腳本,透過 COM 操作視覺化物件則無限制。

4. 能將 COM 物件存入 session 嗎?

不能。COM 實例視為資源,僅能在單一腳本程式中運作。

5. 如何捕獲 COM 錯誤?

目前除 PHP 本身工具(@, track_errors 等)外,無其他工具追蹤 COM 錯誤,正考慮實作相關方法。

6. 能在 PHP 產生 DLL 檔案,像 Perl 那樣嗎?

不能。不幸的是沒有此類 PHP 工具。

7. "Unable to obtain IDispatch interface for CLSID {...}" 意思?

多種原因:CLSI D 號錯誤、找不到 COM 所在 DLL、元件未實作 IDispatch 介面。

8. 如何從遠端伺服器執行 COM 物件?

如同執行本地物件,只需將遠端 IP 位址作為第二個參數傳給 COM 建構子。並確認 php.ini 中 com.allow_dcom=true。

9. 出現 "DCOM is disabled in ..." 該怎麼辦?

編輯 php.ini,設定 com.allow_dcom=true。

10. PHP 頁面能載入 ActiveX 物件嗎?

與 PHP 無關。ActiveX 為客戶端物件,由 HTML 頁面呼叫,與 PHP 腳本無直接關係,也無直接伺服端互動可能。

11. 能取得 COM 執行個體嗎?

可用 monikers 實現。想取得同一 Word 實例的多個引用:
$word = new COM("C:\docs\word.doc");
若無 Word 實例運行,會建立新實例;否則傳回其控制代碼。

12. 能處理 COM 物件送出的事件嗎?

目前尚不能。

13. 呼叫多介面 COM 物件方法出錯怎麼辦?

答案簡單得讓人不滿意:不太清楚,但想你不用做什麼。若有相關資訊請告知作者。

14. PHP 支援 COM,那 COM+ 呢?

COM+ 擴展 COM 架構,透過 MTS 和 MSMQ 管理元件。無特殊功能 PHP 不支援。

15. 能透過 MTS 管理元件資源進而管理 PHP 嗎?

PHP 本身無法處理交易。即使使用支援交易的元件物件,仍需自行實作交易管理。

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