#發問 通過PHP的proc_open函式使用Python的win32com.client庫會失敗

大家好,前幾天我把Server的Windows語系從日語改成美國,結果出了一些問題。 我在Server上使用xampp的Apachi架設了一個網站,一切都很正常,我用PHP的proc_open函式呼叫Python的win32com.client庫對Word進行操作。然而,當我改變系統語系後,突然間出現了一些異常情況。 我已經把Windows語系從美國改回日本,但問題仍然存在。 具體異常情況如下,以下是Python的代碼。 ************************************************** word = win32com.client.DispatchEx('Word.Application') word.Visible = False word.DisplayAlerts = False doc = word.Documents.Open(os.path.join(releasenotice_folder, line)) if doc == None: print(f"Error: Module3的「物件:{type(word)}/檔案:{os.path.join(releasenotice_folder, line)}」開啟失敗。") return else: doc.SaveAs(word_ReleaseNoticePath, FileFormat=17) doc.Close() word.Quit() break ************************************************** 我的目標是將Word轉換成pdf,但問題出在Word物件的創建階段。 執行完「word = win32com.client.DispatchEx('Word.Application')」時,並不會有任何錯誤,但當我使用print(type(word))時,結果是空的。 以下是已經測試過的項目 1. 重新安裝xampp。 2. 重新安裝office。 3. 重新安裝python跟PyWin32 庫。 4. 在Server直接執行Python創建物件並顯示類型,可以正常「<class 'win32com.client.CDispatch'>」。 5. 檢查COM權限,添加Everyone權限。 6. 重啟動Server。 7. 在PHP的「$process = proc_open("python " . $scriptPath, $descriptorspec, $pipes);」前面先設定環境變數。 由於這次的異常並未在創建 win32com.client 物件時發生,而是在後續對物件進行寫入或儲存時才出現,這使得我難以確切了解物件創建失敗的原因。 經過三天的Debug,仍未能解決問題。 不知道有沒有經驗豐富的大神可以提供一些建議?感謝。
sticker
愛心
1
2
全部留言
如果您還卡住。可以找時間遠端幫忙看看。 另外為什麼不直接用 PHP 轉 word 檔案呢?
留言……