在WAMP堆栈上通过PHP执行vbscript的问题

时间:2014-02-12 00:03:32

标签: php vbscript wamp

我在Windows Server 2012上通过Apache(WAMP)执行VBScript时遇到问题。我正在尝试将Docx转换为PDF,并且脚本从命令行运行完美,但在运行PHP时失败。我将提供一个指向它的链接:http://bit.ly/1gngYAn

,而不是发布vbscript

当通过PHP执行如下操作时,WINWORD.exe启动,就像VBScript一样,它挂起并没有任何反应。没有生成PDF(我从未在目录中看到~story.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 个答案:

答案 0 :(得分:2)

我花了几天时间,但这是我找到的解决方案:

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

需要以下标志: -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()等待进程退出。

答案 1 :(得分:0)

你应该使用exec()函数 这是网址http://php.net/manual/fr/function.exec.php