由於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管理員賬號運行,居然好了!。。。