我有一个使用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操作系统吗?
答案 0 :(得分:1)
我不熟悉在Windows中托管php网站,但我知道对于IIS托管网站,我出于各种原因收到此错误。其中一些你在上面提到过。在IIS中托管时,我知道有一个设置需要设置为 True ,称为“启用32位应用程序”
此外,您还要确保从另一台计算机传输此文件是否已解除阻止,因为这会导致很多麻烦和奇怪的错误。
有时候我做的也是编写一个简单的测试gui来调用这个com dll来消除与将其作为网站运行相关的任何内容。如果您能够使用gui应用程序访问它,那么如果运行该网站的用户与启动gui应用程序的用户不同,那么将其作为网站运行可能是一种安全性。
也可以尝试这里提到的文章:
http://www.gfi.com/blog/32bit-object-64bit-environment/
这似乎帮助你判断下面的评论。