【问题标题】:Run a .exe with input parameters from PHP web page使用来自 PHP 网页的输入参数运行 .exe
【发布时间】:2012-11-19 01:22:19
【问题描述】:

我目前正在尝试从 PHP 网页中运行可执行文件(当前使用 exec())。该程序从命令行运行时有两个参数;我不确定用 PHP 运行它的最佳方法是什么。

特别是,.exe 可以使用以下语法从命令行运行:

my_program.exe input_file_name.txt / output_file_name.txt

程序对输入文件中的数据进行处理,并将处理后的数据放入输出文件中。这一切都可以从命令行(在 Windows 中)正常工作。 .exe 是用 Visual Basic 编写的(不是我编写的)。

我知道我通常可以通过执行以下操作给exec() 一个参数:

exec('my_program.exe "example input parameter"');

如果.exe 被编写为从argv() 获取输入,我已经为测试完成了。我尝试了一些类似的方法:

$argument = "C:\wamp\www\web_dev\test\input.txt / C:\wamp\www\web_dev\test\output.txt";
exec('C:\wamp\www\web_dev\test\my_program.exe $argument');

没有成功。 (我目前正在尝试让它在我的本地主机上运行,​​以防万一。)

我相信,由于 .exe 完成了打开、写入和关闭输入和输出文件的所有工作,我只需要弄清楚如何编写一个 PHP 命令,该命令将以适当的方式执行程序.

我已经看到了与此类似的线程,所以我希望我不会重复任何问题;我找不到与这种情况完全相关的线程。

编辑:如果有帮助,我正在努力的总体范围是创建一个允许用户上传文件的 Web 界面,然后调用我提供的可执行文件(上面提到的命令行指令提供给我),并为用户生成一个带有处理数据的输出文件。

【问题讨论】:

    标签: php parameters exec exe


    【解决方案1】:

    基本 PHP 语法错误:您使用了错误的引号。请改用双引号。

    exec("C:\wamp\www\web_dev\test\my_program.exe $argument");
         ^---                                              ^---
    

    单引号 (') 不会将变量插入到字符串中。您正在尝试将文字 $a 等作为参数传递,而不是该变量的值。

    【讨论】:

    • 好电话!谢谢,我隔开那个:)
    • 唉,我还是没有得到输出。它不再冻结(之前它会无限期地继续加载,现在它会在片刻后停止);但是,我的 output.txt 文件仍然是空白的,所以似乎 .exe 没有被正确调用..
    • @Nik 转义\字符:"C:\\wamp\www\\web_dev\\test\\my_program.exe $argument" 或使用 /。否则,它将 \t 解释为双引号中的制表符。
    • @meze:更好的是,只需使用正斜杠即可。 php 会礼貌地为您翻译为特定于操作系统的版本。消除任何繁琐的转义
    • $argument 应该被转义。将其按原样放在网页上是自找麻烦。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-28
    • 2018-12-13
    相关资源
    最近更新 更多