2014-02-12 37 views
1

我在通過Windows Server 2012上的Apache(WAMP)執行VBScript時遇到問題。我試圖將Docx轉換爲PDF,並且腳本完美地從命令行運行,但失敗當通過PHP運行時。我將提供一個鏈接到它:http://bit.ly/1gngYAn在WAMP堆棧上通過PHP執行vbscript的問題

當通過PHP執行如下,WINWORD.exe就像VBScript一樣啓動,並掛在那裏,什麼也沒有發生。沒有生成PDF(我從來沒有看到〜temporary.docx隱藏文件在目錄中彈出)。

我已經嘗試過幾乎所有的exec,system,passthru和COM('WScript.Shell')的迭代,並且都有相同的結果。

爲了避免「轉義」問題,我還嘗試通過.bat文件執行腳本,因此不需要傳遞任何參數,並且結果是相同的。

這裏是我當前的PHP代碼(convert.vbs是從上面的鏈接的代碼):

$obj = new COM ('WScript.Shell'); 

$obj->Run ('cmd /C wscript.exe //B C:\Users\Administrator\Desktop\convert.vbs c:\wamp\www\fileconv\temp_store\52fa8272bf84f.docx', 1, false); 
//I have tried different "window styles" too, and it doesn't make a difference 

我也嘗試修改Apache服務用戶以管理員身份運行(這不是一個生產服務器) ,並啓用了「允許服務與桌面交互」,並獲得了相同的結果。

我也確保目錄具有所有人的「完全控制」(讀,寫,執行等)。

如果我從命令行運行或使用「.bat」文件運行,它會運行得很好。

由於它掛起(腳本和單詞,而不是apache),我已經查看了控制面板中的事件查看器,但沒有涉及的事件。

我的問題首先是爲什麼會發生這種情況,其次,如果第一個答案不能回答,是否有一種方法可以深入瞭解執行過程時發生的情況,排除故障?到目前爲止,我沒有任何數據可供查看或輸出,以幫助我排除故障。

請隨時詢問任何細節。我嘗試了很多很多次的迭代來嘗試使其工作,搜索高低,並且似乎無法得出任何答案。

我很欣賞你的幫助,

路易

回答

2

我花了一兩天,但這裏是我找到了解決辦法:

我使用PSEXEC - http://technet.microsoft.com/en-us/sysinternals/bb897553.aspx

以下標誌s是必需的:-h -i -accepteula -u -p

(我嘗試過沒有-h,-accepteula和-i,但沒有骰子。這是WAMP運行在Windows Server 2012上運行)

下面是一個例子:

exec('c:\psexec\PsExec -h -i -accepteula -u Administrator -p '.$password.' C:\Windows\System32\CScript.exe //Nologo //B c:\wamp\www\fileconv\convert.vbs '.$filename)

現在,正確執行和預期。

我希望這可以幫助有人在相同的情況!

PS在我的問題中使用的WScript.Shell執行方法的工作方式與exec()一樣好,除了exec()等待進程退出。

0

您應該使用exec()函數 這是URL http://php.net/manual/fr/function.exec.php

+0

請再次閱讀這個問題 - 「我已經嘗試過exec,system,passthru和COM('WScript.Shell')的每一次迭代,並且都有相同的結果。我嘗試過使用exec(),並且通過PHP執行的方式似乎對結果沒有任何影響。 – user1080943