弄这做啥?

  1. 实际的需求是:要通过PHP程序将PPT文件(.ppt,.pptx)按页转为.jpg图片的功能。
  2. 代码不难写,网上有很多。本地测试也容易,很快就搞定,但是到了服务器上,配置了很久。
  3. 每个人的服务器环境不同,我写的方法不一定适应你的情况,但是大同小异,多试试应该就OK。

配置步骤

1. Windows服务器。

我的服务器是安装的Windows Server 2012版本。

2. 安装Office。

想要调用PowerPoint的com组件,必须要在服务器上安装office,我选择的是安装office 2013 64位版本。
安装过程中,报了数次错误,我大概看了下,都是和日志写入什么的相关的,应该不会影响com组件,所以遇到错误我也一概忽略了。

3. php.ini配置。

我的php用的是7.2版本。
在php.ini文件中:
A. 将com.allow_dcom = true前面的#去掉。
B. 增加一行:extension=php_com_dotnet.dll
注意:老版本php中,extension=php_com_dotnet.dll是默认加#写在php.ini文件中的,7.2版本中没有写,但是我去php的ext文文件夹中看了一眼,是有php_com_dotnet.dll这个文件的,所以就放心的把extension=php_com_dotnet.dll加上了。

4.DCOM配置

在DCOM配置的问题上,网上有两个版本,我都列出来。
两个版本都需要先在cmd中输入dcomcnfg,然后会打开【组件服务】的窗口。
点击左侧树形目录中的【DCOM】后,再右侧找到Microsoft PowerPoint幻灯片后,在上面点击右键选择【属性】,会弹出属性窗口,切换到最右侧的【标识】标签,如下图所示:
file
要注意的是,如果你的服务器上没有安装Office PowerPoint,这个服务是找不到的。

版本1:【交互式用户】版本(有瑕疵)。

  1. 在【标识】标签里面选择【交互式用户】。
  2. 这时测试一下,会出现 ERR: Failed to create COM object powerpoint.application': 拒绝访问。的错误。
  3. 这时就需要进行下面的配置:
    切换到【安全】标签下。
    我的做法是在三个权限配置的地方都选择自定义:
    file
    然后,将以下几个用户都添加进去,并赋予全部权限:
    Everyone、NETWORK、SERVICE、Internet来宾用户(IUSER)、IIS、站点用户。

    问题:这样配置后的问题是,在远程桌面连接的情况下,程序运转是正常的,但是如果关闭远程桌面,则会报“因为配置标识不正确,系统无法开始服务器进程。请检查用户名和密码”的错误。所以这个版本的解决方案并不完美。

版本2:【下列用户】版本。

  1. 在【标识】标签里面选择【下列用户】。
  2. 然后通过【浏览】的方式选择Administrator用户,并输入密码。
    file
  3. 在版本1的基础上,再增加Administrator用户和Administrators用户组。

    其中的一个插曲是,当我选择了一个用户并输入密码想要保存的时候,报“8000401a”错误,网上查了下,需要在services.msc中开启server服务才可以。

6. 重启IIS,关掉安全狗。

以上配置完成后,重启IIS还是不能正常使用。我怀疑是服务器安全狗进行了限制,于是关掉了安全狗服务,但还是不行。

7. 重启服务器。

最后想到了重启大法,重启后,程序可以正常运转了。

总结

  1. 安全狗似乎不会对服务器调用DCOM组件做限制,至少我没有遇到。
  2. 重启后才生效的问题。有可能是因为安装了office后需要重启,也有可能是因为做完权限配置后需要重启。
  3. 除了上面提到的用户外,由于我的网站是通过nginx配置的SSL,所以我还加了很多用户,不知道是否有用,都列出来备查吧。
    file
  4. 还有就是在方案2中,添加Administrator账户时,似乎必须通过【浏览】按钮添加,如果直接写Administrator似乎会有问题。
  5. 网上还有说要在web.config中添加<system.web><identity impersonate="true" userName="用户名" password="密码" /></system.web>的,至少在我的服务器环境下这个方案没用。

参考过的文章:
https://blog.csdn.net/weixin_30520015/article/details/99214214
https://blog.csdn.net/taoyuanjsj/article/details/5319582
http://www.wangyang.me/2018/study_01/70.shtml
https://blog.csdn.net/luochuan/article/details/8806705
https://www.heiyu100.cn/news114.html

发表评论

邮箱地址不会被公开。 必填项已用*标注