来自PHP的exec但从cmd执行时DCOM权限错误正常工作(officetopdf.exe)

我想要一个php脚本来执行命令 officetopdf.exe input.doc output.pdf </ code >其中 officetopdf.exe </ code>是一个程序,它使用已安装的Office将office文件导出为pdf。</ p>

执行时会抛出错误:</ p> \ n


由于以下错误,检索具有CLSID
{000209FF-0000-0000-C000-000000000046}的组件的COM类工厂失败:80070005访问被拒绝。'< / p>
</ blockquote>

并且无法正常执行。</ p>


  • 服务器具有IIS和Plesk面板。 调用PHP的用户已使用Plesk创建。</ li>
  • officetopdf.exe </ code>直接使用 cmd.exe </ code>执行时,它可以正常工作 。</ li>
  • 这似乎是DCOM权限的问题。</ li>
  • 在我们办公室的另一台计算机上的本地环境中,Windows 8更改了DCOM权限,它运行良好。< / li>
  • 在服务器中首次安装办公室时,所有DCOM应用程序都不会出现在DCOM配置面板中。 我不记得我们是如何添加但是它没有自动添加,因为Office是32位且系统是64位。 如果安装了office 32位,则“检索COM类工厂”错误会更改为找不到类。</ li>
  • 使用Windows 2012在2台服务器上测试</ li>
    </ ul>
    </ div>

展开原文

原文

I want a php script to execute a command officetopdf.exe input.doc output.pdf where officetopdf.exe is an program that uses the installed Office to export office files to pdf.

When executed it throws the error:

‘Retrieving the COM class factory for component with CLSID {000209FF-0000-0000-C000-000000000046} failed due to the following error: 80070005 Access is denied.’

and does not execute properly.

  • The server has IIS and Plesk panel. The user that calls PHP has been created with Plesk.
  • When officetopdf.exe is executed directly with cmd.exe it works well as expected.
  • It seems to be a problem of permissions of DCOM.
  • On local environment on our office in another computer with Windows 8 changing DCOM permissions it worked well.
  • On first install of office in the server all DCOM applications do not appear in DCOM config panel. I don't remember how we added but it wasn't automatically added because the Office was 32 bit and the system is 64 bit. If office 32 bit is installed the error 'Retrieving the COM class factory' changes to something like it does not find the class.
  • Tested on 2 servers with Windows 2012

drl57959
drl57959 嗨!最后,我们设法使用wamp而不是IIS并更改DCOM权限。问题出在IIS上。
大约 5 年之前 回复
dtc4547
dtc4547 你找到了解决方案吗?有同样的问题。Windows8计算机上的DCOM设置是什么?
大约 5 年之前 回复
dow5001
dow5001 你好谢谢!那么代码非常简单,如果你回显exec('officetopdf.exeinput.docoutput.pdf')它会抛出所描述的错误。这是一个dcom权限问题,但我们无法弄清楚。
5 年多之前 回复
dongwu9972
dongwu9972 你能分享一些代码吗?
5 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐