请注意以下行为(Apache 2.2.8,W2K,WXP)
如果 Apache 以服务的身份运行,com_get_active_object() 始终返回 MK_E_UNAVAILABLE,即使确定 Running Object Table 包含对所需对象的引用。
如果 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 现在可以为空。 |
在 Web 服务器环境中使用 com_get_active_object() 并不总是一个明智的选择。大多数 COM/OLE 应用程序并非设计为同时处理多个客户端,即使(或尤其是!)Microsoft Office。您应该阅读 » Considerations for Server-Side Automation of Office 以了解更多有关所涉及的常见问题的信息。
请注意以下行为(Apache 2.2.8,W2K,WXP)
如果 Apache 以服务的身份运行,com_get_active_object() 始终返回 MK_E_UNAVAILABLE,即使确定 Running Object Table 包含对所需对象的引用。
如果 Apache 在控制台中运行,com_get_active_object() 会按要求返回对象句柄。
这显然是一个 Windows 问题。