win2003服务器使用WPS的COM组件的一些问题解决方法

2015-01-24信息快讯网

项目中使用了新功能,gump同学研究出来的使用WPS的COM组件用PHP实现将doc等office格式转换成pdf

由于COM组件只能在windows上使用,因为程序必须放在windows的服务器上运行。在本地xp系统上搭建安装没任何问题,在服务器win2003上安装,碰到了N个问题,最后还是gump同学出手才解决,整整折腾了不少于10个小时才搞定。

安装完Wps office个人版最新的12012版后,按理说就完成了,但运行程序在服务器上报错如下:

Fatal error: Uncaught exception 'com_exception' with message 'Failed to create COM object `WPS.Application': 拒绝访问。 ' in D:\www\9enjoy.com\hx.php:12 Stack trace: #0 D:\www\9enjoy.com\hx.php(12): com->com('WPS.Application') #1 {main} thrown in D:\www\9enjoy.com\hx.php on line 12

是运行这句就$wps = new COM("WPS.Application");报错。经过一翻查找,在DCOM配置里做了配置,解决了这个提示。

1、打开控制面板 - 管理工具 - 组件服务

2、在组件服务面板中依次打开 控制台根目录 - 组件服务 - 计算机 - 我的电脑 - DCOM 配置

3、找到Kingsoft Writer Application Class(金山的文档应用服务),打开属性窗口,切换到安全标签。将“启动和激活权限”选择自定义,编辑,添加everyone权限即可。“访问权限”也一样处理。

这个错误提示通过,运行到$doc = $wps->Documents->Open($src_filename); 时又出现错误

Fatal error: Uncaught exception 'com_exception' with message 'Error [0x800706be] 远程过程调用失败。 ' in D:\www\9enjoy.com\hx.php:15 Stack trace: #0 D:\www\9enjoy.com\hx.php(15): variant->Open('d:\www\9enjoy.com...') #1 {main} thrown in D:\www\9enjoy.com\hx.php on line 15

在“标识”标签,将启动用户改为交互式用户,又出现了另一个错误提示:

Fatal error: Uncaught exception 'com_exception' with message 'Failed to create COM object `WPS.Application': 因为配置类型不正确,系统无法开始服务器进程。请检查用户名和密码。 ' in D:\www\9enjoy.com\hx.php:15 Stack trace: #0 D:\www\9enjoy.com\hx.php(15): com->com('WPS.Application') #1 {main} thrown in D:\www\9enjoy.com\hx.php on line 15

反复尝试,都不行,包括重装WPS。

后"标识"标签,使用指定用户运行,先使用网站用的用户运行,通不过。再使用管理员账号运行,点确定时也会弹出出错信息。应该是这两个选项(启动用户和指定用户)都无法把这个com组件启动起来。如果用交互式用户,是可以的,就是提示用户名和密码不对:(

后测试中有时出现长时间运行,一直不报错...还有出现过如下错误:
Fatal error: Uncaught exception 'com_exception' with message 'Failed to create COM object `WPS.Application': 服务器运行失败 ' in D:\www\9enjoy.com\hx.php:30 Stack trace: #0 D:\www\9enjoy.com\hx.php(30): com->com('WPS.Application') #1 {main} thrown in D:\www\9enjoy.com\hx.php on line 30

期间还发现,由于执行到$wps->Documents->Open就停了,会在进程中出现一个wps或wpsupdate进程,每刷新一次出现一个。最多一次发现有30多个这类进程,有时还会影响程序,需要手工一个一个删除。

最后,使用了一个很BT的做法,将这个站点的IIS身份验证方式使用administrator管理员账号运行,居然好了!。。。
强烈声明: 不要使用(include/require)_once
PHP使用DES进行加密与解密的方法详解
解析如何屏蔽php中的phpinfo()函数
$_GET['goods_id']+0 的使用详解
php全局变量和类配合使用深刻理解
php数组声明、遍历、数组全局变量使用小结
深入理解require与require_once与include以及include_once的区别
深入php define()函数以及defined()函数的用法详解
获取php页面执行时间,数据库读写次数,函数调用次数等(THINKphp)
基于php在各种web服务器的运行模式详解
Apache服务器无法使用的解决方法
php简单开启gzip压缩方法(zlib.output_compression)
七款最流行的PHP本地服务器分享
php获取服务器信息的实现代码
在windows服务器开启php的gd库phpinfo中未发现
将博客园(cnblogs.com)数据导入到wordpress的代码
php5.3中连接sqlserver2000的两种方法(com与ODBC)
php.ini-dist 和 php.ini-recommended 的区别介绍(方便开发与安全的朋友)
php中jQuery插件autocomplate的简单使用笔记
Trying to clone an uncloneable object of class Imagic的解决方法
php通过COM类调用组件的实现代码
关于IIS php调用com组件的权限问题
Uncaught exception com_exception with message Failed to create COM object
学习使用curl采集curl使用方法
PHP中strtotime函数使用方法分享
如何用phpmyadmin设置mysql数据库用户的权限
使用PHPMyAdmin修复论坛数据库的图文方法
php中使用parse_url()对网址进行解析的实现代码(parse_url详解)
使用JSON实现数据的跨域传输的php代码
利用ThinkPHP内置的ThinkAjax实现异步传输技术的实现方法
如何使用Linux的Crontab定时执行PHP脚本的方法
在WINDOWS中设置计划任务执行PHP文件的方法
php操作SVN版本服务器类代码
DISCUZ在win2003环境下 Unable to access ./include/common.inc.php in... 的问题终极解决方案
php数组函数序列之array_combine() - 数组合并函数使用说明
开启CURL扩展,让服务器支持PHP curl函数(远程采集)
服务器web工具 php环境下
PHP 显示客户端IP与服务器IP的代码
PHPnow安装服务[apache_pn]失败的问题的解决方法
©2014-2024 dbsqp.com