无法创建COM对象`WScript.shell':尚未调用CoInitialize

时间:2013-08-21 12:14:17

标签: php com wsh

今天某个时候,发生了这个错误并且脚本被挂起了:

[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');

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

3 个答案:

答案 0 :(得分:2)

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

extension=php_com_dotnet.dll 

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

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

非常感谢。