1

我这里有点乱。

Windows Server 2008 R1 + IIS6 + PHP5.3.10

我有一个 PHP 脚本,它连接到一个小型本地 mssql 数据库,执行搜索并将结果放入变量中。db 中有 6 列,但其中只有 4 列值得通过。

我在这台服务器上有一个控制台 python 程序(2.7 版本)。它需要 4 个参数(目标电子邮件地址、主题、正文和键(键是 64 个字母数字字符串)。然后这个 Python 程序将所有这些放入一个 HTML 模板(在程序本身中定义)并通过电子邮件将其发送到目标。

好的 - 这两个都单独工作!现在有趣的部分。我是否可以让 PHP 启动这个 python 程序,它与 php 脚本位于同一目录中并传递四个参数/参数给它?参数/参数中可能有空格。

4

2 回答 2

1

您正在寻找Exec。它将在控制台上运行命令并返回最后一行输出。如果您想要所有输出,可选的第二个参数将为您提供。

正如 Erty 所说,清理您的输入。永远不要将用户提供的数据直接传递到命令行。

于 2012-08-10T20:53:16.363 回答
1

您可能想要使用exec()shell_exec()运行您的 python 脚本。也可以使用escapeshellarg()escapeshellcmd()酌情清理您的输入。这可能看起来像这样:

$escaped_cmd = escapeshellcmd('nameofexecutable.exe para1 para2 para3');
exec($escaped_cmd);

当然,您需要适当的权限才能运行可执行文件。

于 2012-08-10T20:55:30.263 回答