我的开发环境是PHP 5.3、IIS 7.5和Window7 Home。我正在开发一个原型应用程序,它需要PHP函数imagewindowgrab()。此函数需要调用Windows组件对象模型(COM)。
我的单行代码是:
$browser = new COM("InternetExplorer.Application") or die("Unable to instantiate IE");
它产生了以下错误:
Fatal error: Uncaught exception 'com_exception' with message
'Failed to create COM object `InternetExplorer.Application': Access is denied. '
in C:'inetpub'wwwroot'trial.php:8 Stack trace: #0 C:'inetpub'wwwroot'trial.php(8): com->com('InternetExplore...') #1 {main} thrown
in C:'inetpub'wwwroot'trial.php on line 8
经过几个小时的搜索,在.NET论坛上搜索,找到了好的资源:
- http://forums.asp.net/t/1680634.aspx/1
- http://learn.iis.net/page.aspx/624/application-pool-identities/
最终对我有效的是遵循SO问题答案中列出的说明:
通过asp.net访问Office Word对象模型;由于以下错误而失败:80070005访问被拒绝"
并按照这些指示进行以下操作:
- 在命令行中输入
DCOMCNFG
- 右键单击控制台根>组件服务>计算机>我的电脑并选择属性
- 在选项卡COM安全>访问权限上,单击编辑默认值并添加用户(例如IIS_IUSRS)或服务
- 检查是否允许本地访问
这似乎解决了我使用PHP的COM框架的访问权限问题。
这个问题似乎没有答案,但答案已经在问题中自我解释了。我只是放在这里:-
尝试的代码:-
$browser = new COM("InternetExplorer.Application") or die("Unable to instantiate IE");
生成的错误:-
Fatal error: Uncaught exception 'com_exception' with message
'Failed to create COM object `InternetExplorer.Application': Access is denied. '
in C:'inetpub'wwwroot'trial.php:8 Stack trace: #0 C:'inetpub'wwwroot'trial.php(8): com->com('InternetExplore...') #1 {main} thrown
in C:'inetpub'wwwroot'trial.php on line 8
帮助解决的步骤和资源:-
良好资源:-
http://forums.asp.net/t/1680634.aspx/1
http://learn.iis.net/page.aspx/624/application-pool-identities/
实际有助于解决的资源:-
通过asp.net访问Office Word对象模型;由于以下错误而失败:80070005访问被拒绝"
步骤:-
- 打开命令提示符窗口,然后键入
DCOMCNFG
以打开组件服务界面 - 展开控制台根目录>组件服务Computers并右键单击我的电脑,然后选择属性
- 在选项卡COM安全访问权限单击编辑默认值添加用户(例如IIS_IUSRS)或服务
- 检查允许进行本地访问
注意:从PHP中处理COM框架的访问权限问题