2012-08-24 74 views
8

我試圖通過使用COM函數打開並閱讀PHO的Word文檔的內容。但每當我嘗試閱讀的內容,那麼它給了我下面的錯誤:無法在PHP中使用COM打開Word文檔

Fatal error: Uncaught exception 'com_exception' with message 'Source: Microsoft Word
Description: This command is not available because no document is open.'

我有以下代碼:

$word = new \COM ("word.application") or die ("Could not initialise MS Word object."); 
    $word->Documents->Open (realpath("test.doc")); 

    // Extract content. 
    $content = (string) $word->ActiveDocument->Content; 

    echo $content; 

    $word->ActiveDocument->Close(false); 

    $word->Quit(); 
    $word = null; 
    unset($word); 

我100%肯定的Word文檔存在。我已經檢查了很多次。該文件的權限設置爲Full Control。所以這也不可能。


我也讀了一篇關於php.net的評論。它說IIS導致了一個問題(我正在運行)。他的解決辦法是這樣的:

  • 執行「DCOMCNFG」
  • 打開組件服務>計算機>我的電腦> DCOM配置
  • 搜索Microsoft Office Word中97-2003文檔(這將是這樣翻譯成你的語言,所以採取了一會兒,搜索),< - 在這一個卡住,無法找到任何所謂的「微軟辦公室...」
  • 右鍵點擊它,打開屬性
  • 選擇「身份」標籤
  • 通常這設置爲「啓動用戶」。您必須將其更改爲「交互式用戶」或您選擇的管理員用戶。
  • 應用這些新設置並測試您的COM應用程序。它應該現在工作正常。

無論如何,我還沒有得到這個工作。任何人有任何想法如何可能解決這個錯誤... ???

+0

我不得不使用這臺計算機的普通用戶帳戶,所以在IIS中的PHP永遠不能運行COM(加上一些其他功能),但在CLI中的PHP可以。還沒有測試過,但是如果我真的需要使用COM,我會把它製作成一個CLI腳本,並讓CGI腳本像'exec'那樣執行它。 – Passerby

+0

似乎'word 2007'不需要這個配置?我無法爲我的Word 2007找到此DCOM配置。但COM運行良好。所以有人幫忙? – Turtle

回答

8

我剛找到解決方案。我談步驟:

  • 執行 「DCOMCNFG」
  • 打開組件服務>計算機>我的電腦> DCOM配置
  • 用於Microsoft Office的Word 97-2003文檔搜索(這將作爲s ... 。
  • 等。

工作的。但就像我說的,我找不到Microsoft Office Word 97-2003配置,所以這是我爲了讓它出現在列表中已經做到了。

  1. 開始
  2. 運行
  3. MMC -32
  4. 文件
  5. 添加刪除管理單元
  6. 組件服務
  7. 添加
  8. OK
  9. 控制檯根節點
  10. 個組件服務
  11. 計算機
  12. 我的電腦
  13. DCOM配置
  14. Microsoft Excel應用程序

所以,現在你應該能夠遵循的步驟從我的第一篇文章。然後PHP應該能夠毫無困難地閱讀文檔。

+0

你剛剛救了我的一天。謝謝! –

+0

適用於我的win10電腦。但它不適用於我的WIN7與word2007 ... – Turtle

+0

似乎'詞2007年'不需要這種配置?我無法爲我的Word 2007找到此DCOM配置。但COM運行良好。所以有人幫忙? – Turtle