【问题标题】:Failed to create COM object `WScript.shell': CoInitialize has not been called未能创建 COM 对象“WScript.shell”:尚未调用 CoInitialize
【发布时间】:2013-08-21 12:14:17
【问题描述】:

今天的某个时候,发生了这个错误,脚本挂了:

[21-Aug-2013 08:35:06] PHP Fatal error:  Uncaught exception 'com_exception' with message 'Failed to create COM object `WScript.shell': CoInitialize has not been called.
' in C:\path\to\my\script.php:357
Stack trace:
#0 C:\path\to\my\script.php(357): com->com('WScript.shell')
#1 {main}
  thrown in C:\path\to\my\script.php on line 357

这是导致错误的行(在循环中运行):

$com = new Com('WScript.shell');

这条线通常运行良好,所以我不会错过任何库。为什么会发生这种情况?

【问题讨论】:

    标签: php com wsh


    【解决方案1】:

    转到 php.ini 并添加这一行。之后,重新启动 php 服务器。祝你好运

    extension=php_com_dotnet.dll 
    

    【讨论】:

    • 谢谢,但这已经完成了。奇怪的是,这个错误是随机发生的。我的意思是,脚本在几个小时\几天内运行良好,突然间,每当执行此行时,就会开始出现此错误。
    【解决方案2】:

    这很可能是由于桌面堆分配错误。一种验证方法是转到 Windows 事件日志(系统类别)并搜索“桌面堆分配失败”错误或警告。作为一种解决方法,您可以考虑使用shell_exec

    有关桌面堆分配错误的更多详细信息,请参阅KB 184802

    【讨论】:

      【解决方案3】:

      在 php.ini 中有效地包含库 "extension = php_com_dotnet.dll" 可以用于执行 $ command = new Com ('WScript.Shell'); 就我而言,它适用于 Apache / 2.2.29 服务器 (Win64) PHP / 3.5.29 mod_ssl / 2.2.29

      非常感谢。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-04-05
        • 2013-07-19
        • 1970-01-01
        • 1970-01-01
        • 2019-01-11
        • 2022-10-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多