PHP组件对象模型”;访问被拒绝”;


PHP Component Object Model "Access is denied"

我的开发环境是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访问被拒绝"

并按照这些指示进行以下操作:

  1. 在命令行中输入DCOMCNFG
  2. 右键单击控制台根>组件服务>计算机>我的电脑并选择属性
  3. 在选项卡COM安全>访问权限上,单击编辑默认值并添加用户(例如IIS_IUSRS)或服务
  4. 检查是否允许本地访问

这似乎解决了我使用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访问被拒绝"

步骤:-

  1. 打开命令提示符窗口,然后键入DCOMCNFG以打开组件服务界面
  2. 展开控制台根目录>组件服务Computers并右键单击我的电脑,然后选择属性
  3. 在选项卡COM安全访问权限单击编辑默认值添加用户(例如IIS_IUSRS)或服务
  4. 检查允许进行本地访问

注意:从PHP中处理COM框架的访问权限问题