【问题标题】:Executing a PHP script from VBScript从 VBScript 执行 PHP 脚本
【发布时间】:2021-07-02 15:20:16
【问题描述】:

我有一个经典的 ASP 页面,它需要访问通过 PHP 脚本生成的文件。是否可以从 VBScript 中以某种方式调用 PHP 脚本?

在有人问之前,我没有时间移植任何一个脚本。它们都非常复杂,我现在只需要一个短期解决方案。

现在下面没有产生错误,但没有生成文件。我准备放弃了。

str = "D:\TTnav_Alpha\Alpha\Framework\EnvMgr\generate_jira_list.php"
Set objShell = CreateObject("WScript.Shell")
'response.write(str)
objShell.Run """C:\Program Files (x86)\PHP\php.exe"" " & str ,3,true
Set objShell = Nothing

【问题讨论】:

  • 不清楚:你只是想从vbscript访问文件,还是需要先使用PHP程序处理文件?你需要给 PHP 程序任何输入参数吗?它会输出您需要捕获的响应吗?它需要在 Web 服务器环境中运行还是可以从命令行运行?您的 ASP 和 PHP 环境是否都具有文件的读/写权限?它们是第三方程序还是内部代码?可能还有很多其他问题需要考虑,但这只是我最初的想法。
  • asp脚本需要访问php脚本生成的文件。我想从 asp 脚本中执行 php 脚本以确保文件是最新的。够清楚吗??
  • 是的,这是有用的附加信息。在您当前的尝试中,您可能希望将路径中的反斜杠加倍以转义它们。

标签: php asp-classic vbscript


【解决方案1】:

我的 .vbs 代码成功调用了 .php 文件中的脚本。

在我的 .vbs 文件中,我有这个:

set wshell = CreateObject("WScript.Shell")
wshell.Run "C:\xampp\php\php.exe -f C:\Temp\test2.php"
set wshell = nothing

如果路径中有空格,路径必须用双引号括起来,例如:

set wshell = CreateObject("WScript.Shell")
wshell.Run """C:\my xampp dir\php\php.exe"" " & "-f C:\Temp\test2.php"
set wshell = nothing 

【讨论】:

    【解决方案2】:

    只需按照How do I execute a DOS command / batch file / exe from ASP? 中的说明调用WScript.Shell

    <% 
    ' Untested
    set wshell = CreateObject("WScript.Shell") 
    wshell.run "c:\dos\php c:\site\script.php" 
    set wshell = nothing 
    %>
    

    编辑:您现在正在尝试执行此操作:

    C:\Program Files (x86)\PHP\php.exeD:\TTnav_Alpha\Alpha\Framework\EnvMgr\generate_jira_list.php
    

    这是一个无效的命令(如果将其复制到命令提示符,它将不会运行)。您需要用空格引用路径并将命令与参数分开:

    "C:\Program Files (x86)\PHP\php.exe" D:\TTnav_Alpha\Alpha\Framework\EnvMgr\generate_jira_list.php
    

    在 VBScript 中 you escape quotes doubling them 所以你想要:

    objShell.Run """C:\Program Files (x86)\PHP\php.exe"" " & str,3,false
    

    顺便说一句,3 表示激活窗口并将其显示为最大化窗口。不要忘记在上线之前将其删除。

    参考:Run Method (Windows Script Host)

    【讨论】:

    • 我尝试了类似的方法,但不起作用。我将其添加到我的问题中。
    • 我看过你的编辑,你复制了我的代码,只是转储“不起作用”而没有进一步的细节。您的版本甚至看起来都不是有效的 VBScript。你需要帮助escaping quotes吗?
    • 也许吧。运行后我没有得到任何反馈。我试过转义引号。但是,我仍然没有收到错误。而且我知道 php 脚本有效。我一直从命令行手动运行它。
    • 根据docsrun方法返回程序返回的任何错误码;检查一下。也可以redirect stdout and stderr to a file看一下。
    • 取得进展。我调整了代码,现在出现错误。好像找不到文件。