請注意以下行為 (Apache 2.2.8, W2K, WXP)
如果 Apache 以服務方式執行,即使確定執行物件表格包含所需物件的參考,com_get_active_object() 也總是返回 MK_E_UNAVAILABLE。
如果 Apache 在主控台中執行,com_get_active_object() 會按要求返回物件控制代碼。
這顯然是 Windows 的問題。
(PHP 5, PHP 7, PHP 8)
com_get_active_object — 傳回已執行中 COM 物件實例的控制代碼
com_get_active_object() 與建立新的 com 物件實例類似,但只有在物件已在執行中時,它才會將物件返回到您的腳本。OLE 應用程式使用稱為「執行物件表格 (Running Object Table)
」的功能,允許知名應用程式只啟動一次;此函式公開 COM 函式庫函式 GetActiveObject() 以取得正在執行之實例的控制代碼。
如果請求的物件正在執行,它將會像任何其他 COM 物件一樣返回到您的腳本。
此函式可能失敗的原因有很多,最常見的原因是物件尚未執行。在這種情況下,例外錯誤碼將會是 MK_E_UNAVAILABLE
;您可以使用例外物件的 getCode
方法來檢查例外錯誤碼。
版本 | 說明 |
---|---|
8.0.0 |
codepage 現在可以為 null。 |
在網頁伺服器環境中使用 com_get_active_object() 並非總是明智之舉。大多數 COM/OLE 應用程式並非設計用於同時處理多個用戶端,即使是(或尤其是!)Microsoft Office。您應該閱讀 » 伺服器端 Office 自動化的注意事項 以取得有關一般相關問題的更多資訊。
請注意以下行為 (Apache 2.2.8, W2K, WXP)
如果 Apache 以服務方式執行,即使確定執行物件表格包含所需物件的參考,com_get_active_object() 也總是返回 MK_E_UNAVAILABLE。
如果 Apache 在主控台中執行,com_get_active_object() 會按要求返回物件控制代碼。
這顯然是 Windows 的問題。