致命错误:“未注册类”创建COM对象

时间:2014-05-16 00:47:36

标签: php windows class com registry

我有一个使用PHP(32位PHP)COM对象的第三方软件的应用程序,一切都在我的本地计算机上工作正常(Windows 7,64位)。

当我将我的应用程序部署到实时服务器(Windows Server 2012,64bit)并尝试创建我的COM对象时,我得到了

致命错误:无法创建对象“未注册的课程”

找到其他SO问题后:

Class not registered error from PHP

Failed to create COM object 'X': Class not registered in another WAMP

我已为我的DLL运行regsvr32.exe(32位版本),并显示消息提示,表明注册成功。

并且还验证了CLSID存在于注册表中的所有适当位置(两台计算机上的注册表项都相同):

HKEY_CLASSES_ROOT\Wow6432Node\CLSID
HKEY_LOCAL_MACHINE\Software\Classes\Wow6432Node\CLSID

有谁知道为什么我仍然收到此错误?是由于Windows Server 2012操作系统吗?

1 个答案:

答案 0 :(得分:1)

我不熟悉在Windows中托管php网站,但我知道对于IIS托管网站,我出于各种原因收到此错误。其中一些你在上面提到过。在IIS中托管时,我知道有一个设置需要设置为 True ,称为“启用32位应用程序”

Enabled 32 bit applications

此外,您还要确保从另一台计算机传输此文件是否已解除阻止,因为这会导致很多麻烦和奇怪的错误。

Unblock files

有时候我做的也是编写一个简单的测试gui来调用这个com dll来消除与将其作为网站运行相关的任何内容。如果您能够使用gui应用程序访问它,那么如果运行该网站的用户与启动gui应用程序的用户不同,那么将其作为网站运行可能是一种安全性。

修改

也可以尝试这里提到的文章:
http://www.gfi.com/blog/32bit-object-64bit-environment/

这似乎帮助你判断下面的评论。