请注意以下行为(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应用程序使用所谓的“运行对象表
”来允许仅启动一次众所周知的应用程序;此函数公开COM库函数GetActiveObject()以获取对正在运行实例的句柄。
如果请求的对象正在运行,它将像任何其他COM对象一样返回到您的脚本。
此函数失败的原因有很多,最常见的原因是该对象尚未运行。在这种情况下,异常错误代码将为MK_E_UNAVAILABLE
;您可以使用异常对象的getCode
方法来检查异常代码。
版本 | 描述 |
---|---|
8.0.0 |
codepage 现在可以为空。 |
在Web服务器环境中使用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问题。